Vous pouvez aider à développer le système d’exploitation le plus installé de l’histoire de la Terre. Oui, vous êtes là pour vous lancer dans l'aventure Android ingénieur de plate-forme.
Bien que le processus soit difficile, l'équipe Android s'efforce de simplifier votre chaque sortie. Et l'équipe apporte des améliorations chaque jour grâce à des dans le projet Android Open Source (AOSP).
Alors asseyez-vous, allumez un terminal et entrez dans l'histoire.
Objectifs
L'objectif de cet atelier de programmation est double:
- Pour vous donner un aperçu du workflow du développeur comme pour les ingénieurs Android travaillant sur la plateforme (le système d’exploitation).
- Nous vous encourageons à nous faire part de vos commentaires. sur les outils, la documentation et le workflow du développeur d'Android.
Prérequis
La liste des exigences de cet atelier de programmation est tirée de celles concernant (AOSP). Pour suivre cet atelier de programmation, configurez les éléments suivants :
- Station de travail Linux physique répondant à toutes les exigences publiques
- Dépôt et configuration Git requis pour modifier le code de base Android.
Environnement
En règle générale, les utilisateurs compilent et développent leurs applications directement sur la station de travail. Étant donné que vous pouvez travailler dans différents terminaux et que de nombreuses commandes utilisées sont spécifiques à un terminal, vous devrez les réexécuter dans chaque session de terminal. Plus précisément, il s'agit des commandes source build/envsetup.sh
et lunch
.
Configurer une station de travail
- Installez les packages nécessaires sur votre poste de travail.
- Dans un terminal, installez Repo et obtenez des identifiants. dans tous les dépôts Git.
Initialiser et synchroniser le code
Accédez à votre répertoire d'accueil:
cd ~
Créez un sous-répertoire de travail local:
mkdir aosp
Accédez au répertoire suivant:
cd aosp
Initialisez la branche principale du code source du dépôt AOSP (par défaut):
repo init -u https://android.googlesource.com/platform/manifest
Saisissez ou acceptez vos identifiants Git (nom, adresse e-mail).
Synchronisez le code source:
repo sync -j8
Les synchronisations initiales peuvent prendre une heure ou plus.
Chaque paiement du dépôt est représenté par un fichier manifeste. Il est possible d'effectuer plusieurs paiements de dépôt à la fois, à condition qu'ils existent dans des répertoires distincts. Mais notez que chaque paiement et accumulent des montants pour d'environ 300 Go (et en augmentation). Limitez-vous donc à 2 achats de dépôts, ou enrichir votre système avec un disque secondaire.
Compiler le code
Pour compiler Android, vous devez sélectionner un type d'appareil cible à compiler avec la commande lunch
. Une cible est une permutation d'appareil,
comme un modèle ou un facteur de forme spécifique.
L'appareil cible aosp_cf_x86_64_phone-userdebug
vous permet
pour créer l'appareil Android virtuel Cuttlefish pour
les tests sans
appareil physique.
Si vous préférez créer et mettre à jour un appareil physique, choisissez une autre cible et suivez les instructions pour flasher les périphériques.
Configurez votre environnement pour créer des appareils Android en exécutant la à partir de la racine de l'extraction de votre code source:
source build/envsetup.sh
Transmettez la cible de compilation à la commande "déjeuner", comme ceci:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Compilez le code où que vous soyez dans votre paiement avec:
m
La première compilation peut prendre plusieurs heures. Les builds suivants prennent beaucoup moins de temps.
Lancer Cuttlefish
Cuttlefish est l'émulateur Android utilisé pour tester vos builds.
Si vous n'avez jamais installé Cuttlefish, vous devez installer les Dépendances de seiches. Dans une fenêtre de terminal, exécutez les commandes suivantes pour télécharger, compiler et installer les packages Debian hôtes:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
Le redémarrage déclenche l'installation de modules de noyau supplémentaires et applique
udev
. des règles de pare-feu.Lancez Settlefish:
launch_cvd --daemon
Connectez-vous à l'appareil Settlefish en accédant à
https://localhost:8443
dans votre navigateur Web. Vous êtes accueilli par un flux vidéo du que vous venez de créer.
Effectuer une modification
Mettez à jour le code source en suivant cet exemple de liste de modifications.
À la racine de votre processus de paiement (répertoire
aosp/
), accédez à Projet Gitframeworks/native
:cd frameworks/native
Démarrez un projet temporaire à l'aide de cette commande:
repo start <some-name> .
Modifiez
SurfaceFlinger.cpp
pour inclure les mises à jour de la liste de modifications au niveau lieu suivant:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Recherchez cette ligne:
void SurfaceFlinger::updateColorMatrixLocked() {
Ajoutez ces deux lignes au début de updateColorMatrixLocked():
mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f});
Créez le code :
m
Mettez à jour le build sur l'appareil :
adb root
adb remount
adb sync
adb reboot
Vérifiez que la couleur de l'appareil sélectionné change, comme illustré à la figure 1.
Figure 1 : Apparence de l'écran après un changement de couleur réussi
Tester votre code
Cette partie de l'atelier de programmation utilise un exemple de test figurant dans l'arborescence source. et échoue. Cela utilise Atest pour exécuter le test en local et tester le code.
Pour utiliser le test, procédez comme suit:
Exécutez la commande suivante:
atest DevCodelabTest
Le test échouera. Examinez la trace de la pile du test défaillant :
STACKTRACE: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:87) at org.junit.Assert.assertTrue(Assert.java:42) at org.junit.Assert.assertTrue(Assert.java:53) at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)
Regardez ici
platform_testing/tests/example/devcodelab
Pour modifier le fichier, prenez le nom du test dans
android.test.example.devcodelab.DevCodelabTest
et remplacez.
par/
, pour obtenir ce résultat:src/android/test/example/devcodelab/DevCodelabTest.java
Modifiez ensuite
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
pour remplacer
Assert.assertTrue(false)
par
Assert.assertTrue(true)
Exécutez à nouveau le test pour vérifier que vous avez résolu le problème:
atest DevCodelabTest
Importer votre code pour examen
Repo simplifie l'utilisation de Git en regroupant des commandes telles que git clone
pour travailler sur de nombreux dépôts (ou projets) Git à la fois.
Consultez la page Outils de contrôle source pour obtenir des présentations de Git et Repo, avec Liens vers la documentation complète sur l'utilisation du code source Android. Consultez le dépôt AOSP. pour obtenir la liste complète des projets Git et les projets individuels (chemins d'accès) pour branches associées à chaque projet.
Pour les revues de code de vos projets dans Git, vous utiliserez la commande Gerrit de revue de code basé sur le Web.
En supposant que vous avez apporté vos modifications dans le projet
frameworks/native
, exécutez la commande suivante : ces commandes pour les importer:cd frameworks/native
repo start codelab .
git add .
git commit
Pour votre message de commit, saisissez la commande suivante:
Android codelab change Test: manual atest
Importez votre modification :
repo upload
Si l'opération réussit, un message semblable à celui-ci s'affiche :
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
Afficher votre modification dans Gerrit
Accédez au lien qui apparaît dans le terminal et qui ressemble à celui-ci:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
L'atelier de programmation de démarrage sur le développement de la plate-forme Android est maintenant terminé. Pour connaître les prochaines étapes, consultez la section Envoyer des correctifs. Pour en savoir plus sur le développement d'Android, consultez le reste de ce site.
Annuler la modification
Normalement, après les tests, et après examen et approbation, vous soumettez votre modification dans Gerrit et le fusionner dans le dépôt.
Pour les besoins de cet atelier de programmation, rétablissez votre liste de modifications en cliquant Abandon dans Gerrit.
Abandonnez ensuite la branche temporaire associée dans le projet frameworks/native
(ou ses sous-répertoires):
repo abandon codelab .
N'oubliez pas non plus d'annuler les modifications apportées au fichier de test. Puisque vous n'avez pas
repo start
, git commit
et repo upload
, vous pouvez réinitialiser
lui-même. En supposant que vous vous trouviez dans aosp/platform_testing directory
, utilisez la commande suivante pour réinitialiser le fichier :
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
À ce stade, vous avez terminé. Bravo !
Obtenir de l'aide
Si vous rencontrez des erreurs au cours de cet atelier de programmation, signalez-les à l'aide du Issue Tracker en bas de n'importe quelle page. Envoyez vos questions au construction-android groupe.