3
N'ayant pas encore de téléphone android sous la main, j'ai décidé aujourd'hui de compiler android pour essayer de l'installer sur mon oqo ou mon zaurus, comme il est déjà possible de l'installer par exemple sur un netbook Asus Eee PC 701... N'ayant plus de place sur mon serveur sous ubuntu, j'ai voulu compiler les sources android sur mon laptop sous gentoo.

Voici quelques notes pour compiler android sous gentoo.
Prérequis : installer les paquets nécessaires
cf. les prérequis de la documentation officielle android : il suffit de trouver les paquets équivalents pour gentoo :
# emerge git gnupg # emerge flex bison gpef libsdl esound wxGTK # emerge zip unzip curl sys-libs/zlib sys-libs/readline # emerge valgrind # emerge "=dev-java/sun-jdk-1.5.0.18"
Choisir la version du Java Development Kit (JDK) 1.5
La version la plus récente de sun-jdk est la 1.6 sous gentoo or celle-ci n'est pas supportée pour compiler android : il faut une version sun-jdk 1.5. Rq : si on essaie de compiler les sources avec sun-jdk-1.6, vous aurez une erreur du type (cf. Issue 985) :
[...] make: *** No rule to make target `run-java-tool', needed by `out/target/common/docs/framework-timestamp'. Stop.
On peut choisir entre 2 méthodes pour indiquer lors de la compilation d'android d'utiliser sun-jdk-1.5
1ère méthode : utiliser la commande : "eselect java-vm"
Sous ubuntu, pour choisir la version de sa jvm, on peut utiliser la commande suivante :
# update-java-alternatives --set java-1.5.0-sun
La commande équivalente sous gentoo est :
- pour affecter uniquement l'utilisateur en cours :
$ eselect java-vm set user sun-jdk-1.5
- ou pour modifier globalement pour tout le système :
# eselect java-vm set system sun-jdk-1.5
Il faut ensuite mettre à jour le fichier /etc/profile grâce à la commande :
$ sudo env-update
... puis se relogger pour prendre en compte les nouveaux paramètres, ou charger manuellement les nouvelles variables d'environnement en tapant en console :
$ source /etc/profile
Pour vérifier que toutes les liens symboliques et variables d'environnement sont correctement initialisés, voici le résultat sur ma gentoo :
$ echo $JAVA_HOME /home/thus0/.gentoo/java-config-2/current-user-vm $ echo $JAVAC /home/thus0/.gentoo/java-config-2/current-user-vm/bin/javac $ ls -l /home/thus0/.gentoo/java-config-2/current-user-vm [...] -> /usr/lib/jvm//sun-jdk-1.5 $ ls -l /usr/lib/jvm/sun-jdk-1.5 [...] -> /opt/sun-jdk-1.5.0.18/
Pour rebasculer en sun-jdk-1.6, il faut refaire ces manipulations... ce qui n'est pas pratique ! J'ai utilisé une 2ème méthode : ie. modifier directement les variables d'environnement $JAVA_HOME et $JAVAC et le $PATH ; ce qui est plus rapide à mon avis : les variables d'environnement ne sont modifiées que pour la session en cours...
2ème méthode : modifier directement les variables d'environnement : JAVA_HOME, JAVAC et PATH
Il suffit de créer un script de 3 lignes, par exemple : ~/myandroid/setenv.sh__
export JAVA_HOME=/opt/sun-jdk-1.5.0.18 export PATH=$JAVA_HOME/bin:$PATH export JAVAC=$JAVA_HOME/bin/javac # export ANDROID_JAVA_HOME=$JAVA_HOME
Puis avant de lancer la compilation android, appeler ce script via la commande source
$ cd ~/myandroid $ source setenv.sh $ make
et voilà, après quelques heures de compilation, vos devriez avoir un android fraichement compilé depuis les sources !
[...] Generated: (out/target/product/generic/android-info.txt) Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img Install system fs image: out/target/product/generic/system.img Target ram disk: out/target/product/generic/ramdisk.img Target userdata fs image: out/target/product/generic/userdata.img Installed file list: out/target/product/generic/installed-files.txt


