Porting Android

Contact Us for Dates
4 days practical workshop for up to 12 people.
Only £1580
This course shows how to port Android to a typical embedded hardware platform. It is intended for engineers who are starting out with a fresh Android implementation or who need to understand and modify an existing one.During the hands-on sessions attendees learn how to use the source code from the Android Open Source Project (AOSP) and go through the steps of implementing Android on a common development board with an ARM Cortex A series processor.


An essential part of the training are the lab sessions, which take approximately 50% of the time. We normally work in pairs using a modern development board. Each group will also need a laptop or desktop to run the system development tools. We will provide a bootable USB memory stick with an appropriate version of Linux and Android development tools, so there is no need to install Linux beforehand.

Who it is for

Software engineers and system architects

Training Course Prerequisites

  • A good understanding of the C language and familiarity with Linux development and command-line tools. A working knowledge of Java is useful.


Chapter 1 Introduction and setup

  • Introduction to Android; review of open source licenses: GPL/LGPL, Apache, etc.
  • Selecting a toolchain
  • Getting and building the AOSP (repo, lunch, make)
  • Begin creating a new board definition which will be used through the rest of the course

Chapter 2 Kernel

  • Review of the Android kernel additions
  • Merging the Android patches with an existing kernel BSP
  • Kernel configuration options
  • Adding the kernel to the board definition

Chapter 3 Booting

  • Overview of Android boot
  • Selecting a bootloader and flash memory partition scheme
  • Creating main and recovery boot images
  • Customising the init.rc boot script and system properties

Chapter 4 Hardware libraries

  • Overview of the Android HAL (Hardware Abstraction Layer)
  • Lights, sensors

Chapter 5 Display and OpenGL ES libraries

  • Configuring frame buffer driver, LCD and HDMI interfaces
  • 3D graphics support: libEGL, GL ES 1.1/2.0

Chapter 6 Input devices

  • The input layer: touch screens, mice, keyboards and keypads
  • Input device configuration files: /system/usr/idc.
  • Keyboard and button devices. gpio-buttons
  • Single and multi touch. The multi-touch protocol input event protocol

Chapter 7 Audio devices

  • The audio HAL: libaudio
  • Configuring ALSA sound drivers

Chapter 8 Video devices

  • Video sources: camera devices and other inputs
  • The Video 4 Linux framework

Chapter 9 Network and Bluetooth devices

  • Overview of integrating network devices into Android
  • Wifi devices
  • Wired Ethernet devices
  • Bluetooth devices

Chapter 10 Power management

  • Power states and transitions
  • Using wake locks to prevent the system going into sleep mode
  • Operating on mains vs battery; managing battery charge and discharge cycles