Ce petit papier va expliquer une compilation complète d'Android generic, à noter que pour le moment, seul la compilation pour le dream, n'est dispo, pas pour le sapphire (Htc Magic), mais ayant testé les 2 les binaires qui en découlent sont identiques. Donc je préconise une compilation générique, une compilation kernel, puis l'ajout des fichiers init à la main pour sapphire.
Pour compiler il va te falloir un environnement de travail propre. Il faut un système d'exploitation 32 bits, qui tourne sur un kernel linux, je pense que le plus générique possible fera l'affaire, un i386 sera bien donc j'ai choisis pour se faire : Debian lenny 32 bits i386 installer sur un kvm (kernel virtual machine) Gentoo 64 bits pure (sans une octet 32).
Une fois la machine installer, réelle ou virtuelle, cela n'as pas d'importance, la connexion avec Android n'est pas forcément faites avec cette machines ni même la construction de rom en ce qui me concerne. J'ai dédié une machine virtuelle à la compilation d'Android. Il faut matériellement parlant 1.5 de ram sur cette machine virtuelle, mais je pense que 2Go ne seront pas de trop, cela ne sert que pour la compilation du full android, à noter que pour compiler uniquement le kernel je ne met que 380 de ram.
Modification des sources.list pour avoir les binaires proprios :
# vim /etc/apt/sources.list deb http://ftp2.fr.debian.org/debian/ lenny main contrib non-free deb-src http://ftp2.fr.debian.org/debian/ lenny main contrib non-free deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-free deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
Mise à jour de la liste des paquets et upgrade s'il y a besoin :
# aptitude update && aptitude safe-upgrade
Installation des dépendances :
# aptitude install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev libreadline5 libreadline5-dev readline-common
Pour finir d'installer les dépendances il faut compiler python 2.4 depuis les sources, car il faut le support readline d'actif :
# wget "http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tar.bz2" # tar xvjf Python-2.4.6.tar.bz2 && cd Python-2.4.6/ # ./configure --disable-ipv6 --with-readline && make && make install
Premièrement nous allons créer un environnement de travail agréable, avec tout ce qu'il faut, un bon shell etc.. Personnellement j'utilise zsh, je donnerais donc la configuration du shell que j'utilise un ~/.zshrc.
# mkdir -p /root/Build/bin/ /root/Build/luoAndroid # export PATH="$PATH:/root/Build/bin" # cd ~/Build && wget "http://android.git.kernel.org/repo" -O bin/repo ou # curl http://android.git.kernel.org/repo >~/Build/bin/repo On continue. # chmod a+x ~/Build/bin/repo # cd ~/Build/luoAndroid/ # repo init -u git://android.git.us.kernel.org/platform/manifest.git -b cupcake # vim .repo/manifest.xml Remplacer la 4ème ligne par celle là : fetch="git://android.git.us.kernel.org/"
(je choisis .us, car j'ai rencontré des soucis en laissant par défaut parfois.) Ps: le mail valide n'est pas nécessaire.
Il suffit de se placer à la racine et ensuite d'étider un fichier de configuration pour ajouter un support de langue, et des modules par exemple.
# cd ~/Build/luoAndroid/ # vim buildspec.mk TARGET_PRODUCT:=generic CUSTOM_LOCALES:=en_US fr_FR LOCAL_MODULE:=aes bison bluez bsdiff bzip2 clearsilver dbus dhcpcd dosfstools dropbear e2fsprogs elfcopy elfutils embunit emma esd expat fdlibm freetype gdata genext2fs giflib googleclient icu4c iptables jdiff jhead jpeg libffi libpcap libpng libxml2 netcat netperf neven opencore openssl oprofile ping ppp protobuf safe-iop skia sonivox sqlite srec strace tagsoup tcpdump tinyxml tremor webkit wpa_supplicant xdelta3 yaffs2 zlib backup latencytop libpagemap librank procmem procrank showmap showslab su timeinfo # make
Vous récupérerez le travail dans ~/Build/luoAndroid/out/.