|
|
|
|
| First Day |
| Android overview |
 |
Linux |
|
 |
History |
|
 |
Version management |
|
 |
Android |
|
 |
History |
|
 |
The Open Handset Alliance |
|
 |
Existing ports (HTC Dream, Magic...) |
|
 |
The various licenses used by Android (GPL, LGPL, etc.) |
| Cross-development |
 |
The EABI specification |
|
 |
Differences between the EABI and OABI |
|
 |
Standard toolchains or specific toolchains |
|
 |
Building a standard toolchain (crosstool-ng or buildroot) |
|
 |
The Android toolchain |
| Exercice : |
Building an EABI toolchain |
| The GIT distributed source management system |
 |
Installation aud general usage. |
|
 |
Creating and using a local repository |
|
 |
Connecting to a remote repository |
| Exercice : |
Managing several versions of a program with GIT |
|
 |
Working with branches |
|
 |
Creation of a new branch |
|
 |
Merging branches |
| Exercice : |
Working with vendor branches |
|
 |
Team functions |
|
 |
Creating configuring and managing a public repository |
|
 |
Working with patches |
| Exercice : |
Creating a shared project repository |
| Second Day |
| The Android Linux kernel |
 |
Downloading source code |
 |
The Android-specific drivers for kernels 2.6.29 and beyond |
|
 |
Binder |
|
 |
Logger |
|
 |
Low_memory_killer |
|
 |
Timer_gpio |
|
 |
Timed_output |
|
 |
Configuring an Android Linux kernel |
 |
Building the kernel |
| Exercice : |
Configuration and build of the Android kernel for the target board |
| Exercice : |
Checking the first phases of kernel boot |
| The Linux BSP |
 |
Linux BSP architecture |
|
 |
Overall structure |
|
 |
The ARM BSP |
|
 |
The Linux build system |
|
 |
Defining and initializing the board |
 |
Android specifics |
|
 |
Standard Android button management |
|
 |
The Linux driver model |
|
 |
Kernel objects |
|
 |
Devices |
|
 |
Hotplug events |
| Embedded file systems |
 |
Flash memories and Linux MTDs |
 |
The various filesystem formats |
|
 |
JFFS2, UBIFS, YAFFS2 |
|
 |
Differences between JFFS2 and YAFFS2 |
|
 |
Patching the Linux kernel |
|
 |
The unyaffs tool |
| Exercice : |
Building JFFS2 and YAFFS2 filesystems |
|
 |
Ramdisks and initrd |
| Exercice : |
Building an Android initrd |
| Third Day |
| Booting Android |
 |
The various kinds of boot |
 |
U-Boot |
|
 |
Configuration and build |
|
 |
Porting U-Boot |
|
 |
RedBoot |
 |
Le Linux boot process |
 |
The Android boot sequence |
| The Android System |
 |
Downloading sources |
 |
Exploring the Android system |
 |
The Android source tree |
|
 |
The Bionic library |
|
 |
The Dalvik Jave virtual machine |
|
 |
The basic packages |
|
 |
Building the Android system |
| Exercice : |
Compiling the full Android system |
|
 |
The Android initialisation language |
| Exercice : |
Modifying the Android init sequence |
| Fourth Day |
| The Android BSP |
 |
The Android build system |
|
 |
The Android.mk files |
|
 |
Creating a new Android platform |
|
 |
Declaring a new vendor |
|
 |
Creation of platform-specific parameter files |
|
 |
Choosing platform-dependent compilation options |
| Exercice : |
Compiling a new Android platform |
|
 |
Adding native components |
|
 |
Defining Java methods in C++ |
|
 |
The Android NDK |
|
 |
JNI for Android |
|
 |
Using SWIG |
|
 |
The Android binder |
|
 |
Writing services in C++ |
|
 |
The binder's C++ interface |
| Exercice : |
Recompiling a single component |
| The Android SDK |
 |
Overview and installation of the Software Development Kit (SDK) |
 |
The Android Virtual Devices |
|
 |
Creation |
|
 |
Configuration |
|
 |
Basic Use |
|
 |
The Eclipse Android Development Toolset (ADT) |
|
 |
Developping and testing and Android application |
|
 |
Deploying Android Applications |
|
 |
The Android Debug Bridge (adb) tool |
|
 |
Basic use |
|
 |
Connecting to a remote Android target (real or virtual) |
| Exercice : |
Building and testing a simple Android application |
| Finalization of the Android platform |
 |
Testing the kernel and the system : |
|
 |
Using an NFS-mounted root file system |
|
 |
Updating the initailisation script for NFS use |
|
 |
Flash memory partitionning |
 |
Flashing the system |
|
 |
Flashing through u-boot |
|
 |
Flashing from Linux |
|
 |
_ Updating the initailisation script when booting in flash |
 |
Starting and using the platform in standalone mode |
| Exercice : |
Deploying a finalized Android system |