Android Porting Development Training
| Course code: |
ANDPORTING |
| Details: |
On demand - Please Enquire
|
| Onsite | Enquire about bringing this course to your offices |
| Who should attend: |
Software engineers and system architects |
| Prerequisite skills: |
A good understanding of the C language and familiarity with Linux development and command-line tools. A working knowledge of Java would be useful but not essential. |
Overview
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.
Emphasis is on understanding how the Android build system works and which components need to
be modified to suit particular hardware. Current versions of Android and Linux are used throughout.
Materials
Printed copies of the presentations and lab notes plus electronic copies of the development tools,
sample code and worked solutions for the labs.
Hands-On Labs
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
Outline
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
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
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
Hardware libraries
• Overview of the Android HAL (Hardware Abstraction Layer)
• Lights, sensors
Display and OpenGL ES libraries
• Configuring frame buffer driver, LCD and HDMI interfaces
• 3D graphics support: libEGL, GL ES 1.1/2.0
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
Audio devices
• The audio HAL: libaudio
• Configuring ALSA sound drivers
Video devices
• Video sources: camera devices and other inputs
• The Video 4 Linux framework
Network and Bluetooth devices
• Overview of integrating network devices into Android
• Wifi devices
• Wired Ethernet devices
• Bluetooth devices
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