L'arborescence des sources Android se trouve dans un référentiel Git hébergé par Google. Le référentiel Git inclut des métadonnées pour la source Android, y compris les modifications apportées à la source et la date à laquelle les modifications ont été apportées. Cette page décrit comment télécharger l'arborescence des sources pour une ligne de code Android spécifique.
Pour commencer avec une image d'usine pour un appareil spécifique au lieu de télécharger la source, consultez Sélection d'une version d'appareil .
Initialisation d'un client Repo
Après avoir installé Repo Launcher , configurez votre client pour accéder au référentiel source Android :
Créez un répertoire vide pour contenir vos fichiers de travail. Donnez-lui le nom de votre choix :
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Configurez Git avec votre vrai nom et votre adresse e-mail. Pour utiliser l'outil de révision de code Gerrit, vous avez besoin d'une adresse e-mail connectée à un compte Google enregistré . Assurez-vous qu'il s'agit d'une adresse en direct où vous pouvez recevoir des messages. Le nom que vous fournissez ici apparaît dans les attributions de vos soumissions de code.
git config --global user.name Your Name
git config --global user.email you@example.com
Exécutez
repo init
pour obtenir la dernière version de Repo avec ses corrections de bogues les plus récentes. Vous devez spécifier une URL pour le manifeste, qui spécifie où les différents référentiels inclus dans la source Android sont placés dans votre répertoire de travail.repo init -u https://android.googlesource.com/platform/manifest
Pour consulter la branche principale :
repo init -u https://android.googlesource.com/platform/manifest -b main
Pour extraire une branche autre que main , spécifiez-la avec
-b
. Pour obtenir la liste des branches, consultez Balises et builds de code source .Pour Python2
Pour Python 3
Si vous recevez le message d'erreur «
/usr/bin/env 'python' no such file or directory
», utilisez l'une des solutions suivantes :Si votre Ubuntu 20.04.2 LTS est une version Linux nouvellement installée (et non mise à niveau) :
sudo ln -s /usr/bin/python3 /usr/bin/python
Si vous utilisez Git version 2.19 ou ultérieure, vous pouvez spécifier
--partial-clone
lors de l'exécutionrepo init
. Cela utilise la capacité de clonage partiel de Git pour télécharger uniquement les objets Git en cas de besoin, au lieu de tout télécharger. Étant donné que l'utilisation de clones partiels signifie que de nombreuses opérations doivent communiquer avec le serveur, utilisez ce qui suit si vous êtes développeur et que vous utilisez un réseau à faible latence :repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Pour le système d'exploitation Windows uniquement : si vous recevez un message d'erreur indiquant que les liens symboliques n'ont pas pu être créés, provoquant l'échec
repo init
, consultez la documentation des liens symboliques GitHub pour les créer ou pour activer leur prise en charge. Pour les non-administrateurs, consultez la section Autoriser les non-administrateurs à créer des liens symboliques .
Une initialisation réussie se termine par un message indiquant que Repo est initialisé dans votre répertoire de travail. Votre répertoire client contient désormais un répertoire .repo
où sont conservés les fichiers tels que le manifeste.
Téléchargement de l'arborescence des sources Android
Pour télécharger l'arborescence des sources Android dans votre répertoire de travail à partir des référentiels spécifiés dans le manifeste par défaut, exécutez :
repo sync
Pour accélérer les synchronisations, transmettez les indicateurs -c
(branche actuelle) et -j threadcount
:
repo sync -c -j8
Les fichiers sources Android sont téléchargés dans votre répertoire de travail sous leurs noms de projet.
Pour supprimer la sortie, transmettez l'indicateur -q
(silencieux). Consultez la référence des commandes Repo pour toutes les options.
Utiliser l'authentification
Par défaut, l'accès au code source Android est anonyme. Pour protéger les serveurs contre une utilisation excessive, chaque adresse IP est associée à un quota.
Lors du partage d'une adresse IP avec d'autres utilisateurs (par exemple, lors de l'accès aux référentiels sources au-delà d'un pare-feu NAT), les quotas peuvent se déclencher même pour des modèles d'utilisation réguliers (par exemple, si de nombreux utilisateurs synchronisent de nouveaux clients à partir de la même adresse IP au sein d'un courte période).
Dans ce cas, vous pouvez utiliser un accès authentifié, qui utilise alors un quota distinct pour chaque utilisateur, quelle que soit l'adresse IP.
Tout d’abord, créez un mot de passe avec le générateur de mot de passe et suivez les instructions sur la page du générateur de mot de passe.
Ensuite, forcez l'accès authentifié à l'aide de l'URI du manifeste https://android.googlesource.com/a/platform/manifest
. Remarquez comment le préfixe du répertoire /a/
déclenche une authentification obligatoire. Vous pouvez convertir un client existant pour utiliser l'authentification obligatoire avec la commande suivante :
repo init -u https://android.googlesource.com/a/platform/manifest
Dépannage des problèmes de réseau
Lors du téléchargement depuis un proxy (ce qui est courant dans certains environnements d'entreprise), vous devrez peut-être spécifier explicitement le proxy que Repo doit utiliser :
export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
Plus rarement, les clients Linux rencontrent des problèmes de connectivité, restant bloqués au milieu des téléchargements (généralement lors de la réception d'objets ). L'ajustement des paramètres de la pile TCP/IP et l'utilisation de commandes non parallèles peuvent améliorer la situation. Vous devez disposer d'un accès root pour modifier le paramètre TCP :
sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1
Utiliser un miroir local
Lorsque vous utilisez plusieurs clients, vous pouvez créer un miroir local de l'intégralité du contenu du serveur et synchroniser les clients à partir de ce miroir (ce qui ne nécessite aucun accès réseau).
Ces instructions supposent que le miroir est créé dans /usr/local/aosp/mirror
. Tout d’abord, créez et synchronisez le miroir lui-même. Notez l'indicateur --mirror
, que vous pouvez spécifier uniquement lors de la création d'un nouveau client :
mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync
Lorsque le miroir est synchronisé, vous pouvez créer de nouveaux clients à partir de celui-ci. Notez que vous devez spécifier un chemin absolu :
mkdir -p /usr/local/aosp/main
cd /usr/local/aosp/main
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
Enfin, pour synchroniser un client avec le serveur, synchronisez le miroir avec le serveur, puis le client avec le miroir :
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
repo sync
Il est possible de stocker le miroir sur un serveur LAN et d'y accéder via NFS, SSH ou Git. Il est également possible de le stocker sur un disque amovible et de transmettre ce disque aux utilisateurs ou aux machines.
Vérifier les balises Git
Chargez la clé publique suivante dans votre base de données de clés GnuPG. La clé est utilisée pour signer des balises annotées qui représentent les versions.
gpg --import
Copiez et collez la clé ci-dessous, puis tapez EOF
( Ctrl-D ) pour terminer la saisie et traiter les clés.
-----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-----
Après avoir importé les clés, vous pouvez vérifier n'importe quelle balise avec :
git tag -v TAG_NAME
Obtenir des binaires propriétaires
AOSP ne peut pas être utilisé uniquement à partir du code source pur et nécessite son exécution avec des bibliothèques propriétaires supplémentaires liées au matériel, par exemple pour l'accélération graphique matérielle. Consultez les sections ci-dessous pour les liens de téléchargement et les binaires de l'appareil pour des ressources supplémentaires.
Télécharger des binaires propriétaires
Vous pouvez télécharger les fichiers binaires officiels pour les appareils pris en charge exécutant des branches de version AOSP étiquetées à partir des pilotes de Google . Ces binaires ajoutent l'accès à des fonctionnalités matérielles supplémentaires avec du code non open source. Pour créer la branche principale AOSP, utilisez plutôt l' aperçu des binaires . Lors de la création de la branche principale d'un appareil, utilisez les binaires correspondant à la version numérotée la plus récente ou à la date la plus récente.
Extraire les binaires propriétaires
Chaque ensemble de binaires se présente sous la forme d'un script auto-extractible dans une archive compressée. Décompressez chaque archive, exécutez le script auto-extractible inclus à partir de la racine de l'arborescence source, puis confirmez que vous acceptez les termes du contrat de licence ci-joint. Les binaires et leurs makefiles correspondants sont installés dans le vendor/
hiérarchie de l'arborescence source.
Nettoyer
Pour vous assurer que les binaires nouvellement installés sont correctement pris en compte après leur extraction, supprimez la sortie existante de toute build précédente en utilisant :
make clobber