Android Introduction
Based on slides made by
Mihail L. Sichitiu and Kesav Kaliyaperumal
and also from wikipedia
1
What is Android?

Android is a software
stack for mobile devices
that includes an
operating system,
middleware and key
applications.
2
Android OS
an open-source operating system based
on the Linux kernel
 designed primarily for touchscreen mobile
devices such as smartphones and tablet
computers
 1 billion Android devices have been
activated
 48 billion apps have been installed

Phones
HTC G1,
Droid,
Tattoo
Suno S880
Motorola Droid (X)
Samsung Galaxy
@2011 Mihail L. Sichitiu
Sony Ericsson
4
Tablets
Velocity Micro Cruz
Dawa D7
Gome FlyTouch
Toshiba Android
SmartBook
@2011 Mihail L. Sichitiu
Acer beTouch
Cisco Android Tablet
5
Others
Google Glasses
Portable/Car
Devices
Watches
SmartTV
6
MarketShare
Feb’10
May’10
Apr’11
RIM
42.1%
41.7%
29%
Apple
25.4%
24.4%
25%
Google
9%
13%
33%
Microsoft
15.1%
13.2%
7.7%
Palm
5.4%
4.8%
2.9%
Now (November 2013): 80%
@2011 Mihail L. Sichitiu
7
Android OS
Interface

Android's user interface is based on direct
manipulation: using touch inputs that
loosely correspond to real-world actions,
like swiping, tapping, pinching and reverse
pinching to manipulate on-screen objects.
Android OS
Memory management
 Android is designed to manage memory
(RAM) to keep power consumption at a
minimum, in contrast to desktop operating
systems which generally assume they are
connected to unlimited.
 When an Android app is no longer in use,
the system will automatically suspend it in
memory – while the app is still technically
"open“.
Android OS
Memory management
 Android manages the apps stored in
memory automatically: when memory is
low, the system will begin killing apps and
processes that have been inactive for a
while, in reverse order since they were last
used (i.e. oldest first).
 This process is designed to be invisible to
the user, such that users do not need to
manage memory or the killing of apps
themselves.
Android App Priority and Processes
Android apps do not have control over
their own life cycles
 Aggressively manages resources to ensure
device responsiveness and kills
process/apps when needed

•
•
•
•
•
Active Process – critical priority
Visible Process – high priority
Started Service Process
Background Process – low priority
Empty process
Linux Kernel and Storage Management
The flash storage on Android devices is split
into several partitions, such as /system for
the operating system itself, and /data for
user data and application installations.
 In contrast to desktop Linux, Android device
owners are not given root access to the
operating system and sensitive partitions
such as /system are read-only. However,
root access can be obtained by
exploiting security flaws in Android.

Software Stack
•
•
•
Linux kernel
Libraries
Android run time
–
–
•
•
core libraries
Dalvik virtual machine
application layer
application protocol
Android Architecture
Android S/W Stack - Application

Android provides a set of core applications:








Email Client
SMS Program
Calendar
Maps
Browser
Contacts
Etc
All applications are written using the Java language.
@2011 Mihail L. Sichitiu
15
Android S/W Stack –
App 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.
@2011 Mihail L. Sichitiu
16
Android S/W Stack –
App Framework (Cont)
 Features
Feature
Role
View
System
Used to build an application, including lists, grids, text
boxes, buttons, and embedded web browser
Content
Provider
Enabling applications to access data from other
applications or to share their own data
Resource
Manager
Providing access to non-code resources (localized strings,
graphics, and layout files)
Notification
Manager
Enabling all applications to display customer alerts in the
status bar
Activity
Manager
Managing the lifecycle of applications and providing
a common navigation backstack
@2011 Mihail L. Sichitiu
17
Android S/W Stack - Libraries
 Including
a set of C/C++ libraries used by
components of the Android system
 Exposed to developers through the
Android application framework
@2011 Mihail L. Sichitiu
18
Android S/W 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
@2011 Mihail L. Sichitiu
19
JVM
20
Android S/W Stack – Runtime
(Cont)

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
@2011 Mihail L. Sichitiu
21
Android S/W Stack – Runtime
(Cont)

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
@2011 Mihail L. Sichitiu
22
Android S/W Stack – Linux Kernel


Relying on Linux Kernel 2.6 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
@2011 Mihail L. Sichitiu
23