Architecture of Android
Android Architecture
Android Software
Stack
• Android provides a set of core applications:
– Email Client
– SMS Program
– Calendar
– Maps
– Browser
– Contacts
– Etc
• All applications are written using the Java
language.
Android Application
Framework
• Enabling and simplifying the
reuse of components
– Developers have full access to the
same framework APIs used by
the core applications.
– Users are allowed to replace
components.
Android Application
Framework
Feature Role
View Used to build an application, including lists,
Syste grids, text boxes, buttons, and embedded web
m browser
Content Enabling applications to access data from
Provide other applications or to share their own
r data
Resourc Providing access to noncode resources (localized strings,
e graphics, and layout files)
Manage
r
Notificatio Enabling all applications to display customer
n alerts in the status bar
Manager
Activity Managing the lifecycle of applications and
Manage providing a common navigation backstack
r
Android Software Stack-
Libraries
• Including a set of C/C++ libraries
used by components of the
Android system
• Exposed to developers
through the Android
application framework.
Android Software Stack-
Runtime
• Core Libraries
– Providing most of the functionality available in the core
libraries of the Java language
– APIs
• Data Structures
• Utilities
• File Access
• Network Access
• Graphics
• Etc
Android Software Stack-
Runtime
• Dalvik Virtual Machine
– Providing environment on which
every Android application
runs
– Each Android application runs in its
own process, with its own instance of
the Dalvik VM.
– Dalvik has been written such that a
device can run multiple VMs
efficiently.
• Register-based virtual machine
Android Software Stack-
Runtime
• Dalvik Virtual Machine (Cont)
– Executing the Dalvik Executable (.dex)
format
– .dex format is optimized for minimal
memory footprint.
• Compilation
– Relying on the Linux Kernel
for:
• Threading
• Low-level memory
management
Android Software Stack-Linux
Kernel
• Relying on Linux Kernel 3.0+ for core system
services
– Memory and Process Management
– Network Stack
– Driver Model
– Security
• Providing an abstraction layer between the
H/W and the rest of the S/W stack