0% found this document useful (0 votes)
245 views28 pages

Marakana Android Internals

The document provides an overview of the Android system stack and architecture. It describes the layers from the Linux kernel up through the Dalvik virtual machine and application framework. It also covers operating system features like the file system and security model. Additionally, it discusses how applications interact with native code libraries using the Native Development Kit and Java Native Interface.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
245 views28 pages

Marakana Android Internals

The document provides an overview of the Android system stack and architecture. It describes the layers from the Linux kernel up through the Dalvik virtual machine and application framework. It also covers operating system features like the file system and security model. Additionally, it discusses how applications interact with native code libraries using the Native Development Kit and Java Native Interface.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

Android

Internals
Marko Gargenta Marakana

Agenda
Android Stack Opera6ng System Features Android Startup & Run6me Layer Interac6on Na6ve Development Kit Summary

ANDROID STACK

The Stack

Linux Kernel
Android runs on Linux.
Home Contacts

Applications
Phone Browser Other

Linux provides as well as: Hardware abstraction layer Memory management Process management Networking Users never see Linux sub system The adb shell command opens Linux shell

Application Framework
Activity Manager Package Manager Window Manager Telephony Manager Resource Manager Content Providers Location Manager View System Notiication Manager

Libraries
Surface Manager OpenGL
Media Framework

SQLite

Android Runtime
Core Libs

FreeType

WebKit Delvik VM

SGL

SSL

libc

Display Driver Keypad Driver

Camera Driver WiFi Driver

Linux Kernel

Flash Driver Audio Driver

Binder Driver Power Mgmt

Na6ve Libraries
Bionic, a super fast and small license-friendly libc library optimized for embedded use Surface Manager for composing window manager with off-screen buffering 2D and 3D graphics hardware support or software simulation Media codecs offer support for major audio/video codecs SQLite database WebKit library for fast HTML rendering
Applications
Home Contacts Phone Browser Other

Application Framework
Activity Manager Package Manager Window Manager Telephony Manager Resource Manager Content Providers Location Manager View System Notiication Manager

Libraries
Surface Manager OpenGL
Media Framework

SQLite

Android Runtime
Core Libs

FreeType

WebKit Delvik VM

SGL

SSL

libc

Display Driver Keypad Driver

Camera Driver WiFi Driver

Linux Kernel

Flash Driver Audio Driver

Binder Driver Power Mgmt

Dalvik
Dalvik VM is Googles implementation of Java Optimized for mobile devices

Key Dalvik differences: Register-based versus stack-based VM Dalvik runs .dex files More efficient and compact implementation Different set of Java libraries than SDK

Android and Java


Android Java = Java SE AWT/Swing + Android API

Applica6on Framework
Activation manager controls the life cycle of the app Content providers encapsulate data that is shared (e.g. contacts) Resource manager manages everything that is not the code Location manager figures out the location of the phone (GPS, GSM, WiFi) Notification manager for events such as arriving messages, appointments, etc
Applications
Home Contacts Phone Browser Other

Application Framework
Activity Manager Package Manager Window Manager Telephony Manager Resource Manager Content Providers Location Manager View System Notiication Manager

Libraries
Surface Manager OpenGL
Media Framework

SQLite

Android Runtime
Core Libs

FreeType

WebKit Delvik VM

SGL

SSL

libc

Display Driver Keypad Driver

Camera Driver WiFi Driver

Linux Kernel

Flash Driver Audio Driver

Binder Driver Power Mgmt

Applica6ons

OPERATING SYSTEM FEATURES

File System
The file system has three main mount points. One for system, one for the apps, and one for whatever. Each app has its own sandbox easily accessible to it. No one else can access its data. The sandbox is in /data/data/com.marakana/ SDCard is expected to always be there. Its a good place for large files, such as movies and music. Everyone can access it.

Security
Each Android application runs inside its own Linux process. Additionally, each application has its own sandbox file system with its own set of preferences and its own database. Other applications cannot access any of its data, unless it is explicitly shared.

Android Application
Linux Process

DB

Prefs

File System

ANDROID STARTUP & RUNTIME

Startup Walkthrough

Run6me Overview

Layer Interac6ons
There are three main scenarios for your app to talk to native library: - Directly - Via native service - Via native daemon It will depend on the type of app and type of native library which method works best.

App Run6me Service - Lib

App Run6me-Na6ve Service-Lib

AppRun6meNa6ve Daemon-Lib

Binder IPC

High-performance IPC: shared memory, per-process thread pool, synchronous

Java Na6ve Interface


JNI defines naming and coding convention so that Java VM can find and call native code. JNI is built into JVM to provide access to OS I/O and others.

Building and Running JNI Code

NATIVE DEVELOPMENT KIT

Whats in NDK?
Tools to build and compile your native code for the device architecture (such as ARM)

A way to package your library into the APK file so you can distribute your application easily

A set of native system headers that will be supported for the future releases of Android platform (libc, libm, libz, liblog, JNI headers, some C++ headers, and OpenGL)

(some) documentation, sample code and examples

Why NDK?
NDK allows you to develop parts of your Android application in C/C++. You cannot develop native-only apps in NDK your app is still subject to security sandboxing. Main motivation for native code is performance.

Using NDK

Summary
For most applications, you will just need Android SDK to develop apps. Sometimes you may need NDK to make parts of your app run faster. Ultimately, you can build your own Android platform from source.

Marko Gargenta, Marakana.com [email protected] +1-415-647-7000

Licensed under Creative Commons License (cc-by-nc-nd). Please Share!

You might also like