Understanding the Android Platform Architecture
Mobile application development is now quite popular, and Android is one of the most popular mobile device platforms. The Android platform allows developers to write managed code using Java (http://www.developer.com/java) to manage and control the Android device. Android is a Linux based software stack initially developed by Google that is organized into the Android operating system, the middleware components, and the key applications. The Android operating system is open source and its source code was released under the Apache license. The design goals of the Android platform include: platform neutrality, open source, flexibility, and rapid development. This article presents an overview of the architecture of the Android Platform—a popular platform for mobile devices the world over.
The Android Architecture Components
The Android operating system provides many services that include support for security, virtual memory, multitasking, and threads—all features of modern day operating systems. This section discusses the architecture components of the Android platform. Each Android application uses its own file system and is packaged in one .apk file. The Android platform is organized into the following sections:
- Android applications: This is the topmost layer in the Android platform stack and is comprised of applications that are built-in (developed by the Android team) or any other third party applications that have been installed on the device. Applications that you develop are also installed in this layer. Typical applications include: Camera, Alarm, Clock, Calculator, Contacts, Calendar, Media Player, and so forth.
- Application framework: This layer is built using Java and provides high level services and APIs (for example, notifications, sharing data, and so on) that are leveraged by the applications. The key services of the Android framework include: Activity Manager, Content Providers, Resource Manager, Location Manager, Notifications Manager, View System, and Telephony Manager.
- Native libraries layer: The Android runtime is comprised mainly of the core libraries and the Dalvik Virtual Machine. The native libraries layer is responsible for providing support for the core features. The WebKit Web rendering engine and the Dalvik virtual machine are shipped as part of this layer. The Dalvik Virtual Machine (commonly called the Dalvik VM), like the Java Virtual Machine (JVM), is a register based virtual machine that provides the necessary optimizations for running in low memory environments.
The Dalvik Virtual Machine converts the bytecodes (Java class files) having .class extensions that generated by the Java compiler into the Dalvik—executable files that have .dex extensions. Such binaries are optimized to execute on smaller processors and low memory environments. The Dalvik Virtual Machine takes advantage of the core features of Linux that include multi-threading, process and device management, and memory management. Moreover, the DVM is provides support for platform neutrality (the .dex files are platform neutral) and you can have multiple virtual machine instances execute at the same time efficiently. It should be noted that each Android application executes in its own process—inside its own instance of the Dalvik Virtual Machine.
- Linux Kernel: The Linux Kernel is the bottom most layer in the Android architecture. The Android platform is built on top of the Linux 2.6 Kernel with a few architectural changes. Note that the term kernel refers to the core of any operating system. The Linux Kernel provides support for memory management, security management, network stack, process management, and device management. The Linux Kernel contains a list of device drivers that facilitate the communication of an Android device with other peripheral devices. A device driver is software that provides a software interface to the hardware devices. In doing so, these hardware devices can be accessed by the operating system and other programs.
The Android operating system is comprised of a collection of software components organized into dilayers. This article presented an overview of the architecture of the Android platform. Happy reading!