Atelier de programmation pour développeurs Android

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 un 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, allumez un terminal et écrivons l'histoire.

Buts

La mission de ce codelab est double :

  1. Pour vous donner un petit aperçu de ce à quoi ressemble le flux de travail du développeur pour les ingénieurs Android travaillant sur la plateforme (le système d'exploitation).
  2. Nous vous encourageons à faire part de vos commentaires sur les outils, la documentation et le flux de travail des développeurs Android.

Conditions préalables

La liste des exigences pour ce laboratoire de programmation est dérivée de celles pour le développement d'une plate-forme générale ( AOSP ). Pour suivre cet atelier de programmation, configurez les éléments suivants :

Environnement

En règle générale, 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 la plupart des commandes utilisées sont spécifiques au terminal, vous devrez les réexécuter à chaque session de terminal. Plus précisément, celles-ci incluent les commandes source build/envsetup.sh et lunch .

Configurer le poste de travail

  1. Installez les packages nécessaires sur votre poste de travail.
  2. Tout en restant dans un terminal, installez Repo et obtenez des informations d' identification pour tous les référentiels Git.

Initialiser et synchroniser le code

  1. Accédez à votre répertoire personnel :

    cd ~
    
  2. Créez un sous-répertoire de travail local à l'intérieur :

    mkdir aosp
    
  3. Naviguez dans le répertoire :

    cd aosp
    
  4. Initialisez la branche principale du code source du référentiel AOSP (par défaut) :

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Saisissez ou acceptez vos identifiants Git (nom, adresse e-mail).

  6. Synchronisez le code source :

    repo sync -j8
    

Les synchronisations initiales peuvent prendre une heure ou plus. Consultez les instructions de téléchargement pour les détails connexes pendant que vous attendez.

Chaque retrait de dépôt est représenté 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 extraction et chaque version représentent une utilisation d'environ 300 Go (et en augmentation), alors limitez-vous à 2 extractions de référentiel ou augmentez votre système avec un lecteur secondaire.

Astuce : Pour libérer de l'espace, supprimez un répertoire de branche et recommencez à partir de la création du répertoire, comme indiqué ici :

rm -rf aosp2

Construire le code

Pour créer Android, vous devez sélectionner un type d'appareil cible à créer 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.

L'appareil cible inclus 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 créer et mettre à jour un périphérique physique à la place, choisissez une autre cible et suivez les instructions pour flasher les périphériques .

  1. 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
    
  2. Transmettez la cible de construction à la commande lunch, comme ceci :

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Construisez le code de n'importe où dans votre caisse avec :

    m
    

Attendez-vous à ce que la première construction prenne des heures. Les versions ultérieures 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 créer le code , continuez. Sinon, réexécutez le script envsetup.sh et la même commande lunch vous avez utilisée en premier. Puis

  1. Créez une instance locale Acloud avec :

    acloud create --local-image --local-instance
    
  2. Acceptez les mises à jour des packages requis.

  3. Si vous y êtes invité, redémarrez votre poste de travail pour que toutes les modifications prennent effet.

  4. Sélectionnez l'appareil Seiche.

Vous devriez être accueilli avec 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 Android Debug Bridge (adb) :

adb logcat

Faire un changement

Mettez à jour le code source en suivant cet exemple de liste de modifications .

  1. À partir de la racine de votre commande ( aosp/ ), accédez au projet frameworks/native Git :

    cd frameworks/native
    
  2. Démarrez un projet temporaire avec cette commande :

    repo start <some-name> .
    
  3. Modifiez SurfaceFlinger.cpp pour inclure les mises à jour de la liste des modifications à l'emplacement suivant :

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    

    Ajoutez ce qui suit sous la ligne de code que vous venez d'inclure :

    updateColorMatrixLocked();
    
  4. Construisez le code :

    m
    
  5. Mettez à jour le build sur l'appareil :

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

Vérifiez que vous voyez un changement de couleur sur l'appareil.

Testez votre code

Cette partie de l'atelier 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 :

  1. Cours:

    atest DevCodelabTest
    
  2. Le test échouera. Pour y remédier, recherchez le code source du test défaillant :

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Alors regarde ici

    platform_testing/tests/example/devcodelab
    
  4. Pour obtenir le fichier à modifier, prenez le nom du test dans android.test.example.devcodelab.DevCodelabTest et remplacez le fichier . avec / , pour obtenir ce résultat :

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Ainsi, éditez

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    remplacer

    Assert.assertTrue(false)
    

    avec

    Assert.assertTrue(true)
    
  6. 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 git clone fonctionnent sur de nombreux référentiels (ou projets) Git à la fois.

Voir Outils de contrôle de source pour des aperçus de Git et 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 basé sur le Web Gerrit .

  1. En supposant que vous ayez apporté vos modifications dans les frameworks/native projet frameworks/native , exécutez ces commandes pour les télécharger :

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Pour votre message de validation, saisissez ce qui suit :

    Android codelab change
    Test: manual atest
    
  3. Téléchargez votre modification :

    repo upload
    

Si vous réussissez, un message ressemblant à 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 labo de démarrage pour le développement de la plate-forme Android. Voir Soumettre des correctifs pour les prochaines étapes et voir le reste de ce site pour plus de détails sur le développement d'Android.

Annulez votre modification

Normalement, après les tests 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, rétablissez 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. Puisque 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 vous trouviez 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 en utilisant le lien Issue Tracker en bas de n'importe quelle page. Envoyez des questions au groupe de construction Android .