Vous pouvez aider à développer le système d'exploitation le plus largement installé dans l'histoire de la Terre. Oui, vous êtes ici pour vous lancer dans l'aventure de devenir ingénieur de plate-forme Android.
Bien que le chemin soit difficile, l'équipe Android s'efforce de simplifier votre parcours, à chaque version. Et l'équipe apporte des améliorations chaque jour grâce à un travail direct dans le projet Android Open Source (AOSP).
Alors asseyez-vous, lancez un terminal et écrivons l'histoire.
Buts
La mission de ce codelab est double :
- Pour vous donner un petit aperçu de ce qu'est le flux de travail des développeurs pour les ingénieurs Android travaillant sur la plate-forme (le système d'exploitation).
- Nous vous encourageons à fournir des commentaires sur les outils, la documentation et le flux de travail des développeurs d'Android.
Conditions préalables
La liste des exigences pour ce laboratoire de programmation est dérivée de celles du développement de la plate-forme générale ( AOSP ). Pour participer à cet atelier de programmation, configurez les éléments suivants :
- Poste de travail Linux physique répondant à toutes les exigences publiques .
- Repo et la configuration Git nécessaires pour modifier la base de code Android.
Environnement
Généralement, les utilisateurs créent et développent directement sur le poste de travail. Étant donné que vous travaillez peut-être dans différents terminaux et que de nombreuses commandes utilisées sont spécifiques au 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 le poste de travail
- Installez les packages nécessaires sur votre poste de travail.
- Toujours dans un terminal, installez Repo et obtenez des informations d'identification pour tous les référentiels Git.
Initialiser et synchroniser le code
Accédez à votre répertoire personnel :
cd ~
Créez-y un sous-répertoire de travail local :
mkdir aosp
Naviguez dans le répertoire :
cd aosp
Initialisez la branche principale du code source du référentiel 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 extraction de référentiel est représentée par un fichier manifeste . Il est permis d'avoir plus d'un dépôt de dépôt à la fois, tant qu'ils existent dans des répertoires distincts. Mais notez que chaque paiement et construction équivaut à environ 300 Go d'utilisation (et en croissance), alors limitez-vous à 2 paiements de dépôt ou augmentez votre système avec un lecteur secondaire.
Construire le code
Pour compiler Android, vous devez sélectionner un type d'appareil cible à compiler avec la commande lunch
. Une cible est une permutation de périphérique, telle qu'un modèle ou un facteur de forme spécifique.
La cible d'appareil incluse ci-dessous, aosp_cf_x86_64_phone-userdebug
, vous permet de créer l'appareil Android virtuel Cuttlefish pour le tester sans appareil physique.
Pour construire et mettre à jour un périphérique physique à la place, 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 commande suivante à partir de la racine de votre extraction de code source :
source build/envsetup.sh
Passez la cible de compilation à la commande lunch, comme ceci :
lunch aosp_cf_x86_64_phone-userdebug
Créez le code à partir de n'importe où lors de votre paiement avec :
m
Attendez-vous à ce que la première construction prenne des heures. Les versions suivantes prennent beaucoup moins de temps.
Créer une instance Acloud
Acloud est un outil de ligne de commande dans AOSP qui aide les utilisateurs à créer des appareils Android virtuels, dans ce cas Cuttlefish.
Si vous êtes dans la même session de terminal que celle utilisée pour générer le code , continuez. Sinon, réexécutez le script envsetup.sh
et la même commande lunch
que vous avez utilisée en premier. Alors
Créez une instance locale Acloud avec :
acloud create --local-image --local-instance
Acceptez les mises à jour des packages requis.
Si vous y êtes invité, redémarrez votre poste de travail pour que toutes les modifications prennent effet.
Sélectionnez l'appareil Cuttlefish.
Vous devriez être accueilli par une session VNC contenant un appareil Android !
Vous pouvez interagir avec le périphérique virtuel sur votre poste de travail à l'aide de votre souris et de votre clavier. Vous pouvez également suivre l'activité dans les journaux pendant que vous utilisez votre appareil en utilisant la commande logcat
d'Android Debug Bridge (adb) :
adb logcat
Faire un changement
Mettez à jour le code source en suivant cet exemple de liste de modifications .
Depuis la racine de votre checkout (répertoire
aosp/
), accédez au projetframeworks/native
Git :cd frameworks/native
Démarrez un projet temporaire avec cette commande :
repo start <some-name> .
Modifiez
SurfaceFlinger.cpp
pour inclure les mises à jour de la liste de modifications à l'emplacement suivant :aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Trouvez cette ligne :
postComposition();
Remplacez ces deux lignes par les suivantes :
postComposition(); 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}); updateColorMatrixLocked();
Compilez le code :
m
Mettez à jour la version sur l'appareil :
adb root
adb remount
adb sync
adb reboot
acloud reconnect
Si vous êtes invité à sélectionner un appareil, choisissez celui qui affiche le temps écoulé le plus court. (C'est probablement la dernière de la liste que vous voyez.) Pour voir toutes les instances de périphériques virtuels, utilisez les commandes
acloud list
etacloud list -v
.
Vérifiez que vous voyez un changement de couleur sur votre appareil sélectionné similaire à celui illustré à la figure 1.
Figure 1. Apparition de l'écran après un changement de couleur réussi
Testez votre code
Cette partie du laboratoire de programmation utilise un exemple de test qui se trouve dans l'arborescence source et qui échoue. Cela utilise Atest pour exécuter le test localement et tester le code.
Pour utiliser le test, suivez ces instructions :
Courir:
atest DevCodelabTest
Le test échouera. Pour résoudre ce problème, recherchez le code source du test qui a échoué :
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Alors regarde ici
platform_testing/tests/example/devcodelab
Pour obtenir le fichier à éditer, prenez le nom du test dans
android.test.example.devcodelab.DevCodelabTest
et remplacez le.
avec/
, pour obtenir ce résultat :src/android/test/example/devcodelab/DevCodelabTest.java
Puis éditez
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
remplacer
Assert.assertTrue(false)
avec
Assert.assertTrue(true)
Exécutez à nouveau le test pour vérifier que vous avez résolu le problème :
atest DevCodelabTest
Téléchargez 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.
Voir Outils de contrôle de source pour des aperçus de Git et de Repo, avec des liens vers une documentation complète sur l'utilisation du code source Android. Consultez le référentiel AOSP pour la liste complète des projets Git et les projets individuels (chemins) pour les branches associées à chaque projet.
Pour la révision de code de vos projets dans Git, vous utiliserez le système de révision de code Web Gerrit .
En supposant que vous ayez apporté vos modifications dans le projet
frameworks/native
, exécutez ces commandes pour les télécharger :cd frameworks/native
repo start codelab .
git add .
git commit
Pour votre message de validation, saisissez ce qui suit :
Android codelab change Test: manual atest
Importez votre modification :
repo upload
Si vous réussissez, un message semblable à celui-ci s'affiche :
Upload project frameworks/native/ to remote branch master:
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/master
Voir votre changement dans Gerrit
Allez sur le lien, imprimé dans le terminal, qui ressemble à celui-ci :
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Ceci termine le laboratoire de programmation de démarrage pour le développement de la plate-forme Android. Voir Soumettre des correctifs pour les prochaines étapes, et pour plus de détails sur le développement d'Android, consultez le reste de ce site.
Annuler votre modification
Normalement, après le test et après examen et approbation, vous soumettez votre modification dans Gerrit et la fusionnez dans le référentiel.
Au lieu de cela, pour les besoins de cet atelier de programmation, annulez votre liste de modifications en cliquant sur Abandonner dans Gerrit.
Abandonnez ensuite la branche temporaire associée dans le répertoire frameworks/native
project (ou ses sous-répertoires) :
repo abandon codelab .
N'oubliez pas également d'annuler les modifications que vous avez apportées au fichier de test. Étant donné que vous n'avez pas repo start
, git commit
et repo upload
la modification, vous pouvez réinitialiser le fichier lui-même. En supposant que vous êtes dans le aosp/platform_testing directory
, utilisez ce qui suit 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é ! Bon travail!
Obtenir de l'aide
Si vous rencontrez des erreurs au cours de cet atelier de programmation, veuillez les signaler à l'aide du lien Issue Tracker au bas de n'importe quelle page. Envoyez des questions au groupe de construction d'androïdes .