Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Développeur Android Codelab

Vous pouvez contribuer au développement du système d'exploitation le plus largement installé de 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, nous, l'équipe Android, nous efforçons de simplifier votre parcours à chaque sortie. Et nous apportons des améliorations chaque jour via un travail direct dans le projet Open Source Android (AOSP).

Alors asseyez-vous, allumez un terminal et écrivons l'histoire.

Buts

La mission de ce codelab est double:

  1. Ce laboratoire de codes vous donnera 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 (système d'exploitation).
  2. Ce codelab est une fonction vous obligeant à fournir des commentaires sur les outils, la documentation et le flux de travail des développeurs d'Android lorsque vous partez de zéro.

Conditions préalables

Voici la liste complète des exigences pour ce codelab, dérivées de celles pour le développement de plate-forme générale ( AOSP ).

Pour prendre ce codelab, vous devrez configurer:

Environnement

En règle générale, les utilisateurs construisent et développent directement sur le poste de travail. Étant donné que vous travaillez peut-être dans divers terminaux et que de nombreuses commandes utilisées sont spécifiques au terminal, vous devrez les réexécuter à chaque session de terminal. Plus précisément, ceux-ci incluent les commandes source build/envsetup.sh et lunch .

Configurer le poste de travail

  1. Installez les packages nécessaires sur le poste de travail.
  2. Pendant que vous êtes toujours dans un terminal, installez Repo et obtenez des informations d' identification pour tous les référentiels Git.

Initialisez et synchronisez 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 (valeur 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 -j16
    

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

Chaque extraction de dépôt est représentée par un fichier manifeste . Vous pouvez avoir plusieurs extractions de référentiel à la fois tant qu'elles existent dans des répertoires distincts. Mais notez que chaque caisse et chaque build s'élève à environ 300 Go et augmente, alors limitez-vous à deux ou augmentez votre système avec un lecteur secondaire.

Conseil: pour libérer de l'espace, supprimez un répertoire de branche et recommencez à partir de la création du répertoire:

rm -rf aosp2

Construisez le code

Pour créer Android, vous devez sélectionner un type d'appareil cible à créer avec la commande lunch . Les cibles sont des permutations de périphériques, telles qu'un modèle ou un facteur de forme spécifique.

La cible d'appareil incluse ci-dessous, aosp_cf_x86_phone-userdebug , vous permet de créer l'appareil Android virtuel Cuttlefish pour le tester sans appareil physique.

Pour créer et mettre à jour à la place un périphérique physique, choisissez une autre cible et suivez les instructions pour les périphériques 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. Passez la cible de construction à la commande lunch, comme ceci:

    lunch aosp_cf_x86_phone-userdebug
    
  3. Créez le code de n'importe où dans votre paiement avec:

    m
    

Attendez-vous à ce que la première construction prenne des heures. Les builds suivants 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 de déjeuner utilisée en premier. Ensuite:

  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 Cuttlefish.

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 avec 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. Depuis la racine de votre checkout ( aosp/ ), accédez au projet frameworks/native Git:

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

    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
    
  4. Construisez le code:

    m
    
  5. Mettez à jour la version sur l'appareil:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

Vous devriez voir un changement de couleur sur l'appareil.

Testez votre code

Au cours de cette partie du codelab, nous exécuterons un exemple de test qui se trouve dans l'arborescence des sources et qui échoue déjà. Afin d'exécuter le test localement, nous utiliserons Atest pour tester le code.

Pour utiliser le test:

  1. Courir:

    atest DevCodelabTest
    
  2. Le test échouera; maintenant réparons-le! Recherchez le code source du test qui a échoué:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Puis regardez à l'intérieur:

    platform_testing/tests/example/devcodelab
    
  4. Pour le fichier à modifier, prenez le nom du test et remplacez le fichier . avec / , comme ceci:

    android.test.example.devcodelab.DevCodelabTest
    

    Devient:

    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 corrigé le test:

    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.

Vous utiliserez le système de révision de code basé sur le Web de Gerrit pour les projets dans Git.

  1. En supposant que vous ayez effectué 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, entrez:

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

    repo upload
    

Si vous réussissez, vous verrez un message ressemblant à:

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

Afficher votre modification dans Gerrit

Accédez au lien imprimé dans le terminal ressemblant à:

https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432

Ceci termine le codelab de démarrage pour le développement de la plate-forme Android. Voir Soumettre des correctifs pour les prochaines étapes et le reste de ce site pour plus de détails sur le développement d'Android.

Annulez votre modification

Normalement, après le test et la révision / approbation, vous soumettez votre modification dans Gerrit et la fusionnez dans le référentiel.

Au lieu de cela, pour les besoins du codelab, rétablissez votre liste de modifications en cliquant sur Abandonner dans Gerrit.

Puis abandonnez la branche temporaire associée dans le répertoire frameworks / projet natif (ou ses sous):

repo abandon codelab .

N'oubliez pas également d'annuler les modifications apportées au fichier de test. Comme nous n'avons pas repo start , git commit et repo upload la modification, nous pouvons simplement réinitialiser le fichier lui-même, comme ceci (en supposant que vous soyez dans le aosp/platform_testing directory ):

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 ce codelab, veuillez les signaler en utilisant le lien de commentaires sur le site au bas de n'importe quelle page. Envoyez des questions au groupe de construction Android .