1.0 The Android Platform The Android Platform is a software stack designed primarily but not exclusively to support mobile devices such as phones and tables. The stack has several layers. The layers ranges from low level operating system services that manages the device and its configurations up to sample Applications like Phone Dialer, Contacts Database and Web Browser. Android software also comes with a Software Developers Kit, SDK, used to create Android Applications. Android Software Stack. The Android software stack is organized into several layers as follows: a) b) c) d)
Linux Kernel Layer; System Libraries and Android Runtime System; Application Framework Layer; and Standard Applications Layer.
1. The Linux Kernel Layer The Linux Kernel Layer is the lowest layer of software in the Android Platform. Platf orm. It provides core services that Android computing devices rely on. It provides generic operating system services. These services include: a. permission architecture to restrict access to data and resources to processes that have proper authorization; b. memory and process management to enable multiple processes run simultaneously without interfering with each other; c. and d. device drivers to enable Android communicate communi cate with the wide range lowlevel hardware components that can couple with computing devices such as memory, camera.
Page | 2
Android Linux Kernel also has some specific components. These are but not limited to: a. Android Linux Kernel includes built in power management to enable mobile device run on battery power; b. it also has built-in memory sharing and memory management features because of the limited memory of mobile devices; c. it also includes inter-process communication mechanism called binder to allows multiple processes and services share resources in sophisticated ways. 2. System Libraries and Android Runtime System The system libraries often referred to as the native library are written in C and C++. They handle a lot of core performance sensitive activities on Android devices. The Android libraries has built-in system C library handling process and thread creation, mathematical computation, and memory allocation, also, the System Libraries include: i. the Surface Manager for managing and updating the display; ii. the Media Framework used for playing back Audio and Video files; iii. the WebKit for rendering Browser and opening WebPages; iv. Open GL for high performance graphics; and v. SQLite for managing in-memory relational database engine. The Android Runtime System supports writing and running Android applications. It has two main components i.e. the Core Java Libraries and the Dalvik Virtual Machine. The Core Java Libraries Android applications are typically written in Java Programming Language. It provides vast number of reusable Java Building Blocks. The java.* or javax.* files include basic software’s like common data structures, concurrency mechanisms and file I/O’s. The android.* packages has software specific to the life cycle of mobile applications. The org.*
packages contains various internet or web operations and the junit.* packages supports the unit testing of the Android Application. The Dalvik Virtual Machine Page | 3
The Dalvik Virtual Machine is the actual software executing Android Applications. It is designed to run in a resource-constrained environment, i.e. Mobile Devices. These resources may include slower CPU, less RAM and limited Battery Life. The application written Java when compiled to Java BYTECODE would packaged to a single DEX BYTECODE file with a .dex extension which would be executed by the Dalvik Virtual Machine 3. Application Framework Layer The Application Framework Layer contains reusable software’s that Mobile Applications may likely need. These include: Package Manager: This is a database that keep track of all Applications installed on the device. This allows applications to request services from other applications and contact each other in other to find and share data. Window Manager: This manages many windows that comprises an Application. It may comprise main windows and application sub-windows. View System: - This contains many common graphical user interface elements. This include icons, text, entry boxes, buttons, e.t.c. Resource Manager: - This manages the non-compiled resources that makes up an Application. This include strings, graphic and user interface layout files. Activity Manager: The Activity Manager helps to coordinate and support navigation stack in an Application lifecycle.
Content Provider: These essential databases that allow Applications to store and share structured information. They are designed to run across all Applications so that not only media applications but all applications. Page | 4
Location Manager: This allows Applications to receive locations and movement information generated by either of the systems. This allows applications to perform context specific tasks like finding directions. Notification Manager: - This places notifications of the Notification Bar that lets users know that certain events have occurred. 4. Applications Android OS come with some built in Applications in the Mobile Devices. The Applications Layer handles the built in Applications which include the standard applications comprising the Home Screen, the Contacts Database, the Phone Dialer, the Web Browser, Email Reader, e.t.c. One advantage of the Android Application Layer is that these standard Applications are not hard-coded in the device. A developer may substitute an Application with his own 3 rd party Application that he feels is a better Application. 1.1
Overview of the Android Platform and its Components
The Android Development Environment. The Android Development Environment is considered as the workbench for writing Android Applications. The Android Development Environment (IDE) have several components packed together to develop Android Applications. Android IDE consist of software’s known as the Android Developer Tools (ADT) Bundle;
Page | 5
The ADT is packed with various software’s used for writing and running Android Applications on the developer’s machine. These software’s include the: Android Emulator; Eclipse IDE and Plugins; Android Debugger; and Lots more. The Android Emulator The Android emulator is an application that provides a virtual mobile device on which you can run your Android applications. It runs a full Android system stack, down to the kernel level that include a set of preinstalled applications (such as the dialer) that you can access from your applications. You can choose what version of the Android system you want to run in the emulator by configuring AVDs (Android Virtual Devices), and you can also customize the mobile device skin and key mappings. When launching the emulator and at runtime, you can use a variety of commands and options to control its behavior. The Android system images available through the Android SDK Manager contain code for the Android Linux kernel, the native libraries, the Dalvik VM, and the various Android packages (such as the Android framework and preinstalled applications). The emulator provides dynamic binary translation of device machine code to the OS and processor architecture of your development machine. The Android emulator supports many hardware features likely to be found on mobile devices, including:
An ARMv5, ARMv7, or x86 CPU A 16-bit LCD display One or more keyboards (a Qwerty-based keyboard and associated Dpad/Phone buttons) A sound chip with output and input capabilities Flash memory partitions (emulated through disk image files on the development machine)
A GSM modem, including a simulated SIM Card A camera, using a webcam connected to your development computer. Sensors like an accelerometer, using data from a USB-connected Android device.
Page | 6
Android Virtual Devices and the Emulator To use the emulator, you first must create one or more Android Virtual Device configurations. In each configuration, you specify an Android platform to run in the emulator and the set of hardware options and emulator skin you want to use. Then, when you launch the emulator, you specify the AVD configuration that you want to load. Each AVD functions as an independent device, with its own private storage for user data, SD card, and so on. When you launch the emulator with an AVD configuration, it automatically loads the user data and SD card data from the AVD directory. By default, the emulator stores the user data, SD card data, and cache in the AVD directory. To create and manage AVDs you use the AVD Manager UI or the android tool that is included in the SDK.
Hibban Buhari Faculty of Computer Science & Information Technology, Bayero University, Kano, Kano Nigeria.