1. Android Open Source Project
SEMINAIRE
Ice Cream Sandwich
Châteaux de la Volonière
Présentation GENYMOBILE
19 Janvier 2012
2. FORMATION
Agenda
AOSP : Historique
Architecture générale du code source
Processus de compilation
Outils de tests et validation (CTS/CDD)
Exemple : portage d’ICS pour VirtualBox
3. AOSP - Historique
FORMATION
Initiative de l’Open Handset Alliance, dirigée par Google, pour créer une
plateforme ouverture à destination des opérateurs, OEMs et développeurs.
Projet « Open Source » : majoritairement sous licence ASL 2.0 (GPL pour le
noyau Linux et quelques composants), mais forte dépendance vis-à-vis de
Google (traumatisme Honeycomb…)
Neuf versions ‘majeures’ (1.0, 1.1, CupCake, Donut, Eclair, Froyo,
Gingerbread, Honeycomb, ICS) depuis Septembre 2008
Qqs chiffres : plus de 200M de terminaux et >550k activations par jour
4. ICS – FORMATION natif de terminaux
Support
Jamais une release d’AOSP n’a intégré nativement le support
d’autant de terminaux :
Nexus S (GSM, CDMA/WiMAX)
Galaxy Nexus (GSM/HSDPA+, CDMA/LTE)
Motorola Xoom (WiFi only, CDMA/LTE)
PandaBoard (carte de développement)
11 cibles de compilation intégrées à ICS (8 terminaux issus
de 4 familles, 3 systèmes virtuels/émulateurs)
http://source.android.com/source/building-devices.html
https://plus.google.com/112218872649456413744/posts/75aLL1dWY2u
6. AOSP – Intérêt de disposer du code
FORMATION
« ROM Cooking » sur smartphones et tablettes (ex, projet
CyanogenMod – plus de 1M de déploiement)
Utilisation sur de nouvelles plateformes, au-delà des
smartphones et tablettes
Debugging et optimisation des applications
Analyse de sécurité du code source
7. AOSP – Compilation
FORMATION
Une source d’information : http://source.android.com
Pré-requis OS : http://source.android.com/source/initializing.html
Un conseil : utiliser une plateforme Ubuntu 10.04 en 64-bit (plateforme de
référence)
Code source : >6GB
Machine de compilation : 8GB RAM mini (16GB conseillé), 25GB disque libre mini
pour compilation
Préparation / Récupération outil repo :
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
http://source.android.com/source/initializing.html
http://source.android.com/source/downloading.html
8. AOSP – Compilation
FORMATION
Téléchargement code source :
$ mkdir android-4.0.3_r1
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r3
$ repo sync
Sélection de la cible et compilation :
$ source build/envsetup.sh
$ lunch (puis sélection cible)
$ make –jX (où X est le nombre de tâches de compilation en parallèle)
Une compilation complète prend entre 20 minutes et 8 heures selon la
configuration de la machine de compilation…
Puis installation de la ROM sur le terminal, ou exécution de l’émulateur ou de la
machine virtuelle.
http://source.android.com/source/downloading.html
http://source.android.com/source/building.html
9. AOSP – Code source
FORMATION
bionic/ : Remplacement de la « libc »
bootable/ : Bootloader de référence
build/ : Scripts de compilation d’AOSP
cts/ : « Compatibility Test Suite »
dalvik/ : Machine virtuelle Dalvik
development/ : Outils de développement
device/ : Fichiers et composants spécifiques
external/ : Projets externes utilisés par AOSP
frameworks/ : Services système, classes android.*, …
hardware/ : Librairies de support hardware
libcore/ : Projet « Apache Harmony »
ndk/ : Native Development Kit
packages/ : Applications et services de base
prebuilt/ : Binaires précompilés
sdk/ : Software Development Kit
system/ : Composants système
10. AOSP – CTS/CDD
FORMATION
CDD = Compatibility Definition Document
Document de spécifications des terminaux Android (un CDD par version
Android).
Une condition nécessaire (mais pas suffisante…) pour accéder au Google
Market est que le terminal respecte le CDD de la version concernée.
Les pré-requis peuvent changer drastiquement d’une version à l’autre. Par
exemple, le CDD d’ICS demande 340MB de RAM disponible à Android (sans
compter la RAM utilisée par la radio, la vidéo, …) alors que le CDD de
Gingerbread ne demandait que 128MB de RAM disponible...
http://source.android.com/compatibility/overview.html
11. AOSP – CTS/CDD
FORMATION
CTS = Compatibility Test Suite
Ensemble d’outils de tests permettant de
vérifier (en partie) la conformité d’un
terminal (et de sa ROM Android) au CDD
concerné.
http://source.android.com/compatibility/cts-intro.html
12. Portage d’AOSP sur VirtualBox
FORMATION
Avec ICS, AOSP intègre la génération d’image virtuelle pour
VirtualBox
Mais de nombreuses fonctions sont manquantes :
Pas de souris
Pas de réseau
Pas d’Audio
Pas d’accélération matérielle OpenGL
Pas de partage de fichier avec le système hôte
Pas de support d’USB
D’où l’idée de travailler à améliorer le support de VirtualBox
dans ICS
http://www.buildroid.org/blog/?page_id=38
13. Portage d’AOSP sur VirtualBox
FORMATION
Travaux menés :
Support de la souris : recompilation noyau avec support
souris PS/2
Support Ethernet : modification scripts de démarrage
Support Audio :
Recompilation noyau avec support audio ALSA
Ecriture librairie module hardware audio
Partage de fichier avec le système hôte :
Compilation modules noyau VirtualBox
Modification scripts de démarrage
Support USB :
Recompilation noyau avec drivers USB hôte et USB mass-storage
Configuration composant vold pour montage automatique clé USB
14. Pour aller plus loin…
FORMATION
Instructions compilation AOSP : http://source.android.com
Groupes de discussion Google sur Android :
http://groups.google.com/group/android-building
http://groups.google.com/group/android-porting
http://groups.google.com/group/android-platform
http://groups.google.com/group/android-kernel
Forums xda-developers :
http://forum.xda-developers.com/forumdisplay.php?f=564
Projet android-x86 : http://www.android-x86.org
Blog buildroid (portage VirtualBox) : http://www.buildroid.org/blog/