Google s'est engagé à promouvoir l'équité raciale pour les communautés noires. Regarde comment.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Construire Android

Suivez ces instructions pour commencer à créer Android.

Configurer l'environnement

Initialisez l'environnement avec le script envsetup.sh :

source build/envsetup.sh

ou

. build/envsetup.sh

Consultez le script sur platform / build / envsetup.sh pour obtenir une description des commandes associées, y compris le lunch pour sélectionner les cibles des appareils et les tapas pour créer des applications dégroupées, telles que l' application TV de référence .

Vous devrez relancer cette commande après chaque repo sync de repo sync pour récupérer les modifications apportées à ce script. Notez que le remplacement de source par . (un seul point) enregistre quelques caractères et la forme courte est plus couramment utilisée dans la documentation.

Le script envsetup.sh importe plusieurs commandes qui vous permettent de travailler avec le code source Android, y compris les commandes utilisées dans cet exercice. Voici quelques exemples de commandes importants:

  • lunch - lunch product_name - build_variant de product_name en tant que produit à construire, et build_variant comme la variante de construction, et stocke ces sélections dans l'environnement à lire par la suite de invocations m et d' autres commandes similaires.
  • m - Exécute les builds à partir du haut de l'arbre. Ceci est utile car vous pouvez exécuter make partir de sous-répertoires. Si vous avez défini la variable d'environnement TOP , il l'utilise. Si vous ne le faites pas, il recherche l'arborescence dans le répertoire actuel, en essayant de trouver le haut de l'arborescence. Vous pouvez soit créer toute l'arborescence du code source en exécutant m sans arguments, soit créer des cibles spécifiques en spécifiant leurs noms.
  • mma - Construit tous les modules dans le répertoire courant, et leurs dépendances.
  • mmma - Construit tous les modules dans les répertoires fournis, et leurs dépendances.
  • croot - cd au sommet de l'arbre.

Pour voir la liste complète des commandes disponibles, exécutez:

hmm

Choisissez une cible

Choisissez la cible à construire avec le lunch . La configuration exacte peut être passée en argument. Par exemple, la commande suivante fait référence à une version complète de l'émulateur, avec tout le débogage activé:

lunch aosp_arm-eng

S'il est exécuté sans argument, le lunch vous invite à choisir une cible dans le menu. Voir Sélection d'une version de périphérique pour les configurations de construction de tous les périphériques existants.

Toutes les cibles de construction prennent la forme BUILD-BUILDTYPE , où BUILD est un nom de code faisant référence à la combinaison de fonctionnalités particulière. Le BUILDTYPE est l'un des suivants.

Buildtype Utilisation
utilisateur Accès limité; adapté à la production
userdebug Comme utilisateur mais avec accès root et capacité de débogage; préféré pour le débogage
fra Configuration de développement avec des outils de débogage supplémentaires

La build userdebug doit se comporter de la même manière que la build de l'utilisateur, avec la possibilité d'activer un débogage supplémentaire qui viole normalement le modèle de sécurité de la plate-forme. Cela rend la construction userdebug idéale pour les tests utilisateur avec de meilleures capacités de diagnostic. Lors du développement avec la version userdebug, suivez les instructions userdebug .

La version eng donne la priorité à la productivité de l'ingénierie pour les ingénieurs qui travaillent sur la plate-forme. La version eng désactive diverses optimisations utilisées pour offrir une bonne expérience utilisateur. Sinon, la build eng a un comportement similaire à celui des builds user et userdebug afin que les développeurs de périphériques puissent voir comment le code se comporte dans ces environnements.

Pour plus d'informations sur la création et l'exécution sur du matériel réel, consultez Exécution de builds .

Construire le code

Cette section est un résumé rapide pour vous assurer que la configuration est terminée.

Construisez tout avec m . m peut gérer des tâches parallèles avec un argument -jN . Si vous ne fournissez pas d'argument -j , le système de construction sélectionne automatiquement un nombre de tâches parallèles qu'il pense être optimal pour votre système.

m

Comme expliqué ci-dessus, vous pouvez créer des modules spécifiques au lieu de l'image complète du périphérique en listant leurs noms dans votre ligne de commande m . De plus, m fournit des pseudotargets à des fins spéciales. Quelques exemples sont:

  • droid - m droid est la construction normale. Cette cible est ici car la cible par défaut nécessite un nom.
  • all - m all construit tout ce que fait m droid , plus tout ce qui n'a pas la balise droid . Le serveur de build l'exécute pour s'assurer que tout ce qui se trouve dans l'arborescence et possède un fichier Android.mk est Android.mk .
  • clean - m clean supprime tous les fichiers de sortie et intermédiaires de cette configuration. C'est la même chose que rm -rf out/ .

Exécutez m help pour voir ce que les autres pseudotargets m fournissent.

Exécuter!

Vous pouvez exécuter votre build sur un émulateur ou le flasher sur un appareil. Étant donné que vous avez déjà sélectionné votre cible de construction avec le lunch , il est peu probable qu'elle s'exécute sur une cible différente de celle pour laquelle elle a été conçue.

Clignotant avec Fastboot

Pour flasher un périphérique, utilisez fastboot , qui doit être inclus dans votre chemin après une compilation réussie. Voir Clignotement d'un appareil pour obtenir des instructions.

Émuler un appareil Android

L'émulateur est ajouté automatiquement à votre chemin par le processus de construction. Pour exécuter l'émulateur, tapez:

emulator

Dépannage des erreurs de construction courantes

Mauvaise version de Java

Si vous essayez de construire une version d'Android qui est incompatible avec votre version de Java, make Abandonne avec un message tel que:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

Voici les causes probables et les solutions:

Python version 3

Repo repose sur des fonctionnalités particulières de Python 2.x et est incompatible avec Python 3. Pour utiliser Repo, installez Python 2.x:

apt-get install python

Système de fichiers insensible à la casse

Si vous construisez sur un système de fichiers HFS sous macOS, vous pouvez rencontrer une erreur telle que:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Suivez les instructions de la rubrique Création d'une image disque sensible à la casse .

Aucune autorisation USB

Par défaut, sur la plupart des systèmes Linux, les utilisateurs non privilégiés ne peuvent pas accéder aux ports USB. Si vous voyez une erreur d'autorisation refusée, suivez les instructions de la section Configuration de l'accès USB .

Si [adb] (adb.md) était déjà en cours d'exécution et ne peut pas se connecter à l'appareil après avoir configuré ces règles, vous pouvez le tuer avec adb kill-server . Cette commande fait redémarrer adb avec la nouvelle configuration.