-
Essay / Android Software - 1197
The Android software stack uses a hierarchical structure. As shown in Figure 10, the Android software stack is basically divided into 5 layers, which include application layer, application framework, libraries, Android runtime, and Linux kernel [51]. Basically, the Linux operating system and a set of C/C++ libraries are exposed through an application framework to maintain and manage the Android runtime and applications [52].i. Linux KernelThe Linux kernel sits at the bottom of the Android software stack. A modified version of Linux 2.6 is used by Android to provide core system features that Linux excels at, such as enforcing application permissions security, low-level memory management, process management, and threading, the networking stack, and a huge range of low-level device drivers. 3], [52], [54], [62]. In addition to this, it also acts as a hardware abstraction layer (HAL) that facilitates the interaction between the device hardware and the rest of the software stack to allow Android applications to access and use the device hardware using a simple API, regardless of the specifics of the underlying hardware [3], [52], [62]. Some of the kernel improvements made to Android include the following [108]:a. BinderIt is an OpenBinder-based driver for enabling inter-process communication (IPC) in the Android operating system.b. Power ManagementAndroid supports its own power management driver, built on top of standard Linux power management. The driver has been optimized to ensure that there is no power consumption by the CPU so neither applications nor services require power. Low Memory KillerThis driver acts as an Android memory manager that scans the list of running Linux processes and ki...... middle of paper .......f. Notification ManagerIt allows all applications to alert users by displaying custom alerts in the status bar. Activity ManagerIt manages the application lifecycle, including the mechanism to preserve application state. Application LayerThe application layer, which is at the top level of the Android software stack, is populated by a set of native and third-party applications such as an email client, SMS program, calendar, maps, a browser, contacts, etc. [52], [63]. All these applications are written using the Java programming language but they are not compatible with Java programs written for the Java Standard Edition and Java Micro Edition platforms [62], [63]. Applications providing classes and services from the application framework are executed in the Android runtime. [52].