An Introduction to Android Internals
A two-day course which shows how Android is put together and how you can customise it for your own needs. It is based entirely on open source components from the Android Open Source Project and shows how you can create a working Android system and run it on a PC using the Android emulator.
Delegates will learn how to configure the kernel, the bootstrap sequence and how services are started. They will get a chance to use the NDK to develop native code in C/C++ and to see how it is integrated and loaded onto the development platform.
Dates:
Course Outline
Applications and activities:
- the application life cycle and the activity stack
- applications and Linux processes.
Graphics:
- from view to frame buffer.
- how drawable components (views, layouts and widgets) are composed onto a surface and role of the system level compositor, SurfaceFlinger, in rendering the output to a frame buffer
Coding in C and C++:
- developing native code using the Android Native Development Kit.
- how native methods are called using JNI.
- debugging using gdb.
- how to add other C or C++ code, for example from other open source projects.
How Android starts up:
- boot loaders and the fastboot protocol.
- the init program and the initrc script.
- key components including service manager, zygote and system manager
The kernel:
- how it differs from a stock Linux kernel.
- power management and wakelocks.
- improvements in low memory and out of memory handling
Course Overview
A two day course which shows how Android is put together and how you can apply it to your own projects.
Course Objectives:
To show how to build an Android platform from scratch and to know what the various components do.
Delegates will learn:
How to create an Android platform using the Android
Open Source Project and how to configure it for typical hardware.
Pre-requisites:
- Good knowledge of programming in C/C++
- A working knowledge of Java, to be able to write simple demonstration applications, would be beneficial.
- A working knowledge of Linux or another embedded operating system
Who should attend:
- Developers working with or planning to work with Android who need to know how it works at the system level.
Duration:
- Two days.
Course Materials:
- Delegate handbook
Related Courses:
- EL-503 Developing for Embedded Linux
- EL-504 Developing Linux Device Drivers
- EL-301 Graphics for Embedded Linux
Course Workshop:
- Hands-on sessions using the Android emulator.


