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 des développeurs pour les ingénieurs Android travaillant sur la plate-forme (le système d'exploitation).
  2. Vous encourager à fournir des commentaires autour des outils d'Android, la documentation et le flux de travail des développeurs.

Conditions préalables

La liste des exigences pour ce codelab sont dérivés de ceux pour la plate - forme générale ( PSBA développement). 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. , Ceux - ci comprennent en particulier la source build/envsetup.sh la lunch source build/envsetup.sh et le lunch des commandes.

Configurer le poste de travail

  1. Installez les paquets nécessaires sur votre poste de travail.
  2. Tout en restant dans un terminal, installer Repo et obtenir des informations d' identification à tous les dépôts 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.

Chaque caisse de pension 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 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.

Construire le code

Pour construire Android, vous devez sélectionner une cible type d'appareil pour construire avec le lunch commande. Une cible est une permutation de périphérique, telle qu'un modèle ou un facteur de forme spécifique.

L'objectif de l' appareil inclus ci - dessous, aosp_cf_x86_64_phone-userdebug , vous permet de construire le Seiche appareil Android virtuel pour tester sans dispositif physique.

Pour construire et mettre à jour un dispositif physique au lieu, choisir une autre cible et suivez les instructions pour les appareils clignotants .

  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. Construire le code où que vous soyez 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 PSBA qui aide les utilisateurs à créer les appareils Android virtuels, dans ce cas Seiche.

Si vous êtes dans la même session de terminal utilisé pour construire le code , procédez. Dans le cas contraire, exécutez à nouveau le envsetup.sh script et le même lunch commande utilisée là d' abord. 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 le Android Debug Bridge (ADB) logcat commande:

adb logcat

Faire un changement

Mettre à jour le code source suivant cet exemple changelist .

  1. A partir de la racine de votre caisse ( aosp/ répertoire), accédez au frameworks/native projet Git:

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

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

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Trouvez ces deux lignes :

    postFrame();
    postComposition();
    
  5. Remplacez ces deux lignes par les suivantes :

    postFrame();
    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();
    
  6. Construisez le code :

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Si vous êtes invité à sélectionner un appareil, choisissez celui qui affiche le temps écoulé le plus court. (Ceci est probablement le dernier dans la liste que vous voyez.) Pour voir toutes les instances de périphériques virtuels, utilisez la acloud list et acloud list -v la acloud list -v des commandes.

Vérifiez que vous voyez un changement de couleur sur votre appareil sélectionné similaire à ce qui apparaît dans la figure 1.

Example of a successful color change

Figure 1. Aspect de l' écran après changement de couleur réussie

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. Cette emploie Atest pour exécuter le test localement et tester le code.

Pour utiliser le test, suivez ces instructions :

  1. Courir:

    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, prendre le nom du test en android.test.example.devcodelab.DevCodelabTest et remplacer . avec / , pour obtenir ce résultat:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Puis éditer

    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 par l'utilisation Git commandes telles que le regroupement git clone au travail dans de nombreux dépôts Git (ou projets) à la fois.

Voir Outils de contrôle Source pour des aperçus de Git et prise en pension, avec des liens vers une documentation complète sur le travail avec le code source Android. Voir le référentiel PSBA pour la liste complète des projets Git et les projets individuels (chemins) pour les branches associées à chaque projet.

Pour l' examen du code de vos projets dans Git, vous utiliserez le Gerrit système d'examen de code basé sur le Web.

  1. En supposant que vous avez fait vos modifications dans le frameworks/native projet, 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 correctifs soumettons pour les prochaines étapes, et pour plus de détails sur le développement Android, voir le reste de ce site.

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, aux fins de la présente codelab, revenir votre changelist en cliquant sur Abandonner dans Gerrit.

Puis abandonner la branche temporaire associée aux frameworks/native répertoire du projet (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 ne l' avez pas repo start , git commit , et repo upload le changement, vous pouvez réinitialiser le fichier lui - même. En supposant que vous êtes dans le aosp/platform_testing directory , utilisez les touches suivantes 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 cette codelab, s'il vous plaît les signaler à l' aide du problème Tracker lien en bas de chaque page. Envoyez vos questions à l' immeuble Android groupe.