Établissement d’un Environnement de construction
Cette section décrit comment configurer votre environnement de travail local pour créer les fichiers source Android. Vous devez utiliser Linux ou macOS ; la création sous Windows n’est actuellement pas prise en charge.
Pour un aperçu de l’ensemble du processus de révision et de mise à jour du code, voir Durée de vie d’un correctif.
Choix d’une branche
Certaines exigences pour l’environnement de construction sont déterminées par la version du code source que vous prévoyez de compiler. Pour une liste complète des branches disponibles, voir Numéros de génération. Vous pouvez également choisir de télécharger et de créer le dernier code source (appelé master
), auquel cas vous omettez simplement la spécification de branche lorsque vous initialisez le référentiel.
Après avoir sélectionné une branche, suivez les instructions appropriées ci-dessous pour configurer votre environnement de génération.
Configuration d’un environnement de construction Linux
Ces instructions s’appliquent à toutes les branches, y compris master
.
La version Android est régulièrement testée en interne sur Ubuntu LTS (14.04) et les tests Debian. La plupart des autres distributions devraient disposer des outils de génération requis.
Pour le Pain d’épice (2.3.x) et les versions supérieures, y compris la branche master
, un environnement 64 bits est requis. Les anciennes versions peuvent être compilées sur des systèmes 32 bits.
Installation des paquets requis (Ubuntu 18.04)
Vous avez besoin d’une version 64 bits d’Ubuntu.
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
Installation des paquets requis (Ubuntu 14.04)
Vous avez besoin d’une version 64 bits d’Ubuntu (la version 14.04 est recommandée).
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
Installation des paquets requis (Ubuntu 12.04)
Vous pouvez utiliser Ubuntu 12.04 pour créer des versions plus anciennes d’Android. La version 12.04 n’est pas prise en charge sur master
ni sur les versions récentes.
Installer les paquets requis (Ubuntu 10.04-11.10)
Construire sur Ubuntu 10.04-11.10 n’est plus pris en charge, mais peut être utile pour créer des versions plus anciennes d’AOSP.
sudo apt-get install git 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 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
Sur Ubuntu 10.10:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
Sur Ubuntu 11.10:
sudo apt-get install libx11-dev:i386
Configuration de l’accès USB
Installez un ensemble par défaut géré par la communauté de udev
règles pour tous les appareils Android en suivant les instructions pour Configurer un périphérique pour le développement.
À l’aide d’un répertoire de sortie distinct
Par défaut, la sortie de chaque build est stockée dans le sous-répertoire out/
de l’arborescence source correspondante.
Sur certaines machines avec plusieurs périphériques de stockage, les builds sont plus rapides lors du stockage des fichiers source et de la sortie sur des volumes séparés. Pour des performances supplémentaires, la sortie peut être stockée sur un système de fichiers optimisé pour la vitesse au lieu de la robustesse du crash, car tous les fichiers peuvent être régénérés si le système de fichiers est corrompu.
Pour configurer cela, exportez la variable OUT_DIR_COMMON_BASE
pour pointer vers l’emplacement où vos répertoires de sortie seront stockés.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
Le répertoire de sortie de chaque arbre source distinct est nommé d’après le répertoire contenant l’arbre source. Par exemple, si vous avez des arbres sources /source/master1
et /source/master2
et si OUT_DIR_COMMON_BASE
est défini sur /output
, les répertoires de sortie sont /output/master1
et /output/master2
.
Évitez d’avoir plusieurs arborescences sources stockées dans des répertoires portant le même nom, car les arborescences sources finiraient par partager un répertoire de sortie, avec des résultats imprévisibles. Ceci n’est pris en charge que sur Jelly Bean(4.1) et versions ultérieures, y compris la branche master
.
Configuration d’un environnement de construction macOS
Dans une installation par défaut, macOS s’exécute sur un système de fichiers qui préserve la casse mais qui ne tient pas compte de la casse. Ce type de système de fichiers n’est pas pris en charge par Git et provoque le comportement anormal de certaines commandes Git (telles que git status
). Pour cette raison, nous vous recommandons de toujours travailler avec les fichiers sources AOSP sur un système de fichiers sensible à la casse. Cela peut être fait assez facilement en utilisant une image disque, discutée ci-dessous.
Lorsque le système de fichiers approprié est disponible, la création de la branche master
dans un environnement macOS moderne est simple. Les branches antérieures nécessitent des outils et des SDK supplémentaires.
Création d’une image disque sensible à la casse
Vous pouvez créer un système de fichiers sensible à la casse dans votre environnement macOS existant à l’aide d’une image disque. Pour créer l’image, lancez Utilitaire de disque et sélectionnez Nouvelle image. Une taille de 250 Go est le minimum pour terminer la construction; plus d’espace est le meilleur pour la croissance future. L’utilisation d’images clairsemées permet d’économiser de l’espace tout en permettant une croissance au besoin. Sélectionnez Sensible à la casse, journalisé comme format de volume.
Vous pouvez également créer le système de fichiers à partir d’un shell avec la commande suivante:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
Cela crée un fichier .dmg.sparseimage
qui, une fois monté, agit comme un lecteur avec le formatage requis pour le développement Android.
Si vous avez besoin d’un volume plus important plus tard, vous pouvez redimensionner l’image clairsemée avec la commande suivante:
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
Pour une image disque nommée android.dmg.sparseimage
stockée dans votre répertoire personnel, vous pouvez ajouter des fonctions d’assistance à ~/.bash_profile
:
- Pour monter l’image lorsque vous exécutez
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- Pour la démonter lorsque vous exécutez
umountAndroid
# unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }
Après avoir monté le volume android
, vous y faites tout votre travail. Vous pouvez l’éjecter (le démonter) comme vous le feriez avec un disque externe.
Installation de Xcode et d’autres packages
- Installez les outils de ligne de commande Xcode :
xcode-select --install
Pour les anciennes versions de macOS (10.8 ou inférieures), vous devez installer Xcode à partir du site du développeur Apple. Si vous n’êtes pas enregistré en tant que développeur Apple, vous devez créer un identifiant Apple à télécharger.
- Installez MacPorts ou Homebrew pour la gestion des paquets.
- Assurez-vous que le répertoire associé se trouve dans votre chemin dans votre fichier
~/.bash_profile
:- MacPorts-
/opt/local/bin
doit apparaître avant/usr/bin
export PATH=/opt/local/bin:$PATH
- Homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts-
- Pour MacPorts, problème:
POSIXLY_CORRECT=1 sudo port install git gnupg
- Pour Homebrew, problème:
brew install git gnupg2
Définition d’une limite de descripteur de fichier
Sous macOS, la limite par défaut du nombre de descripteurs de fichiers ouverts simultanément est trop faible et un processus de génération très parallèle peut dépasser cette limite. Pour augmenter le plafond, ajoutez les lignes suivantes à votre ~/.bash_profile
:
# set the number of open files to be 1024ulimit -S -n 1024