Android Pentesting Series Part 1 : Android Architecture Basics
The Major components of Android platform are
The foundation of Android Platform is the Linux kernel. The Linux kernel will provide an abstraction layer between the device hardware and the other components of android architecture. It is responsible for memory management, process management, management of network stack, driver models, security etc.
Hardware Abstraction Layer (HAL)
The hardware abstraction layer (HAL) provides standard interfaces that expose device hardware capabilities to the higher-level Java API framework.
Android Runtime environment is one of the most important part of Android. It contains components like core libraries and ART (Android Runtime). Prior to Android version 5.0 (API level 21), Dalvik was the Android runtime but it is now replaced with ART. Some core functionality of ART are :
- Ahead-of-time (AOT) and just-in-time (JIT) compilation
- Optimized garbage collection (GC)
Native C/C++ Libraries
Many core Android system components and services, such as ART and HAL, are built from native code that require native libraries written in C and C++. The Native Libraries includes various C/C++ core libraries and Java based libraries such as Media, Graphics, Surface Manager, OpenGL etc. to provide a support for android development.
Java API Framework
The entire feature-set of the Android OS is available to you through APIs written in the Java language. These APIs form the building blocks you need to create Android apps by simplifying the reuse of core, modular system components and services. Developers have full access to the same framework APIs that Android system apps use.
Applications is the top layer of android architecture. The pre-installed applications like home, contacts, camera, gallery etc. and third party applications downloaded from the play store like chat applications, games etc. It runs within the Android run time with the help of the classes and services provided by the application framework.