Construire sa custom ROM AOSP (Android Open Source Project)

Cet article relate les étapes pour récupérer les sources d’Android afin de les compiler pour faire tourner notre custom ROM dans un émulateur. Toutes ces actions seront réalisées à partir d’Ubuntu 10.10. Elles sont également réalisables sous Mac OS X mais pas sur Windows.

Installer le JDK

Le JDK n’est plus fourni dans les dépôts par défaut d’Ubuntu 10.10. Il nous faut donc ajouter le dépôt concerné. À partir de Gingerbread, Java 6 est utilisé, pour les versions précédentes, il s’agit de Java 5. Nous pouvons le faire en ligne de commande :

Java 6:

1
2
3
4
$ sudo add-apt-repository "deb http://archive.canonical.com/ maverick partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu maverick partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

Java 5:

1
2
3
4
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk

Mais aussi par l’interface en faisant : Système → Administration → Gestionnaire de mises à jour. Une fois la fenêtre ouverte, aller dans l’onglet « Autres logiciels » puis cocher les 2 premières cases à cocher :

Configuration des sources

Configuration des sources

Installer les paquets requis

Il est nécessaire d’installer l’ensemble des paquets suivants :

1
2
3
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl 
  zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev 
  libx11-dev lib32readline5-dev lib32z-dev

Assurez vous d’avoir une version de python comprise entre 2.4 et 2.7, mais pas de python 3.X.

Télécharger les sources

Nous allons maintenant télécharger un outil développé par Google qui simplifie l’utilisation de Git. Il s’agit d’une surcouche à Git.

Initialisation

Nous allons créer les dossiers ~/android/bin/, ~/android/system/ et ~/android/sdk/. Bin/ contiendra notre script repo, system/ le code source téléchargé et sdk/ le SDK Android.

Commençons par le dossier bin/, qu’il nous faudra ajouter à notre PATH afin de pouvoir exécuter la commande repo qu’importe le dossier où l’on se trouve dans notre terminal :

1
2
$ mkdir ~/android/bin
$ PATH=~/android/bin:$PATH

Nous allons télécharger le script repo dans notre dossier bin/, puis le rendre exécutable :

1
2
$ curl http://android.git.kernel.org/repo > ~/android/bin/repo
$ chmod a+x ~/android/bin/repo

Pour initialiser la récupération du code d’android, lancer la commande suivante dans ~/android/system

1
2
$ cd ~/android/system
$ repo init -u git://android.git.kernel.org/platform/manifest.git

Vous pouvez également ne récupérer qu’une branche en spécifiant le paramètre -b suivi du nom de la branche, par exemple pour gingerbread :

1
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

Le script va vous demander votre nom ainsi que votre email, saisissez les. Laissez « oui » (y) aux demandes suivantes pour activer la couleur sur ce compte.

Téléchargement

C’est parti pour la grande étape tant attendue : le téléchargement. Pour cela, très facile, lancez la commande suivante toujours dans votre dossier ~/android/system/ :

1
$ repo sync

Si vous téléchargez l’ensemble des sources, sachez que celles-ci pèsent 2.4Go, vous devez donc être patient. Lisez un livre, prenez un café, sortez votre chien… en attendant.

Vérifier les tags Git

Il va nous falloir charger une clé dans GnuGP. La clé est utilisée pour signer les tags qui représentent les releases. Lancer la commande suivante :

1
$ gpg --import

Rien ne va se passer, vous devrez saisir du texte dans votre terminal. Copiez / collez donc la clé suivante puis appuyez sur Ctrl + D pour quitter une fois fait :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)  
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D 
-----END PGP PUBLIC KEY BLOCK-----

Il est ensuite possible de vérifier n’importe quel tag avec la commande :

1
$ git tag -v TAG_NAME

Compilons…

Lançons maintenant notre première compilation à travers la commande suivante dans ~/android/system/:

1
$ make

Cela peut prendre un peu de temps aussi, en fonction de la puissance de votre ordinateur.

Installation du SDK

Le SDK va nous permettre de lancer l’émulateur afin de tester notre custom ROM générique. Pour télécharger celui-ci, il faut se rendre à cette adresse et télécharger la version pour linux évidemment.

On extrait le tout puis on le déplace dans notre dossier ~/android/sdk/ :

1
2
$ tar -zxvf ~/Téléchargements/android-sdk_r10-linux_x86.tgz
$ mv android-sdk-linux_86 ~/android/sdk

Il faut spécifier notre PATH vers les tools d’android :

1
$ PATH=~/android/sdk/platform-tools:$PATH

Nous reviendrons vers notre SDK plus tard, après avoir installé eclipse.

Installation d’eclipse

Pour installer Eclipse, nous allons faire simple en passant pour notre gestionnaire de dépôts. On recherche eclipse, on clique sur le premier paquet qu’on sélectionne à installer et on valide les dépendances. Puis on applique pour installer :

Eclipse

Eclipse

Une fois installé, lancez Eclipse qui se situe dans le menu Applications → Programmation. Rendez vous dans Help → Install new software. Dans la fenêtre ouverte, saisissez l’URL https://dl-ssl.google.com/android/eclipse/ dans la champ « Work with ». Cliquez sur « Add », donnez lui un nom comme « Android », puis validez :

Android sdk dans Eclipse

Android sdk dans Eclipse

Cochez « Developers tools », puis next. Acceptez les licences, puis cliquez sur finish.

NB : si vous avez un problème au niveau des licences, mettez l’URL http://dl-ssl.google.com/android/eclipse/ à la place de l’autre.

Nous allons à présent installer le SDK. Nous pouvons passez par l’intermédiare d’Eclipse pour cette étape en se rendant dans Windows → Android SDK and AVD Manager. Puis on installe tout comme suit :

SDK

SDK

Acceptez les licences, puis c’est parti pour l’installation.

Configurer le SDK dans Eclipse

Il faut maintenant indiquer à Eclipse où se trouve le SDK. Pour cela, Windows → Preferences. Dans le menu de gauche sur Android, puis indiquez comme chemin celui vers le SDK soit ~/android/sdk/.

SDK Eclipse

SDK Eclipse

Vous pouvez maintenant visualiser le projet dans Eclipse et faire des modifications si vous le souhaitez. Il suffit pour faire cette opération de cliquer sur File → New project → Java project. Dans la fenêtre, choisir « create project from existing source » en spécifiant le chemin vers ~/android/system/ :

Créer projet

Créer projet

NB : Attention, avant de faire cette opération, il faut que vous avez correctement effectuer votre make, sans erreur !

On obtient au final ceci :

Eclipse sdk project

Eclipse sdk project

Démarrer l’émulateur

Notre code source est compilé après ces longues heures, nous allons pouvoir démarrer notre émulateur pour visualiser sous linux ce que donne cette version de base. Pour cela, rien de complexe, il suffit de lancer la commande suivante :

1
2
$ cd ~/android/system/out/host/linux-x86/bin
$ ./emulator -system ~/android/system/out/target/product/generic/ -kernel ~/android/system/prebuilt/android-arm/kernel/kernel-qemu -data ~/android/system/out/target/product/generic/userdata.img

Et voici le résultat :

Émulateur

Émulateur