Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Codelab per sviluppatori Android

Puoi aiutare a sviluppare il sistema operativo più ampiamente installato nella storia della Terra. Sì, sei qui per intraprendere il viaggio per diventare un ingegnere della piattaforma Android.

Sebbene il percorso sia impegnativo, il team di Android si impegna a semplificare il tuo viaggio in ogni versione. E apportiamo miglioramenti ogni giorno tramite il lavoro diretto in Android Open Source Project (AOSP).

Quindi siediti, accendi un terminale e facciamo la storia.

obiettivi

La missione di questo codelab è duplice:

  1. Questo codelab ti darà un piccolo assaggio di come sia il flusso di lavoro degli sviluppatori per gli ingegneri Android che lavorano sulla piattaforma (sistema operativo).
  2. Questo codelab è una funzione di forzatura per fornire feedback sugli strumenti di Android, sulla documentazione e sul flusso di lavoro degli sviluppatori quando si inizia da zero.

Prerequisiti

Ecco l'elenco completo dei requisiti per questo codelab, derivati ​​da quelli per lo sviluppo della piattaforma generale ( AOSP ).

Per prendere questo codelab, devi configurare:

Ambiente

In genere, gli utenti creano e sviluppano direttamente sulla workstation. Poiché si può lavorare in vari terminali e molti dei comandi utilizzati sono specifici del terminale, sarà necessario eseguirli nuovamente in ciascuna sessione del terminale. In particolare, questi includono i source build/envsetup.sh e i comandi lunch .

Imposta workstation

  1. Installare i pacchetti necessari sulla workstation.
  2. Mentre sei ancora in un terminale, installa Repo e ottieni le credenziali per tutti i repository Git.

Inizializza e sincronizza il codice

  1. Naviga nella tua home directory:

     cd ~
     
  2. Crea una sottodirectory di lavoro locale al suo interno:

     mkdir aosp
     
  3. Naviga nella directory:

     cd aosp
     
  4. Inizializza il ramo master del codice sorgente del repository AOSP (impostazione predefinita):

     repo init -u https://android.googlesource.com/platform/manifest
     
  5. Inserisci o accetta le tue credenziali Git (nome, indirizzo e-mail).

  6. Sincronizza il codice sorgente:

     repo sync -j16
     

Le sincronizzazioni iniziali possono richiedere un'ora o più. Consulta le istruzioni per il download per i dettagli correlati durante l'attesa.

Ogni checkout repo è rappresentato da un file manifest . Potresti avere più di un check-out alla volta, purché esistano in directory distinte. Ma prendi nota di ogni checkout e build pari a circa 300 GB e in crescita, quindi limitati a due o aumenta il tuo sistema con un'unità secondaria.

Suggerimento: per liberare spazio, eliminare una directory di diramazione e ricominciare dalla creazione della directory:

 rm -rf aosp2
 

Costruisci il codice

Per creare Android, è necessario selezionare un tipo di dispositivo di destinazione da compilare con il comando lunch . I target sono permutazioni del dispositivo, come un modello specifico o un fattore di forma.

Il target del dispositivo incluso di seguito, aosp_cf_x86_phone-userdebug , consente di creare il dispositivo Android virtuale Cuttlefish per i test senza un dispositivo fisico.

Per creare e aggiornare invece un dispositivo fisico, scegli un altro target e segui le istruzioni per i dispositivi flash .

  1. Imposta il tuo ambiente per la creazione di dispositivi Android eseguendo il comando seguente dalla radice del checkout del codice sorgente:

     source build/envsetup.sh
     
  2. Passa il target di costruzione al comando lunch, in questo modo:

     lunch aosp_cf_x86_phone-userdebug
     
  3. Crea il codice da qualsiasi punto del tuo checkout con:

     m
     

Aspettatevi che la prima build impieghi ore. Le build successive richiedono molto meno tempo.

Crea un'istanza Acloud

Acloud è uno strumento da riga di comando in AOSP che aiuta gli utenti a creare dispositivi Android virtuali, in questo caso Cuttlefish.

Se ci si trova nella stessa sessione terminale utilizzata per compilare il codice , procedere. Altrimenti, rieseguire lo script envsetup.sh e lo stesso comando lunch usato lì prima. Poi:

  1. Crea un'istanza locale Acloud con:

     acloud create --local-image --local-instance
     
  2. Accetta gli aggiornamenti ai pacchetti richiesti.

  3. Se richiesto, riavviare la workstation per rendere effettive tutte le modifiche.

  4. Seleziona il dispositivo Seppie.

Dovresti essere accolto con una sessione VNC contenente un dispositivo Android!

È possibile interagire con il dispositivo virtuale sulla workstation utilizzando il mouse e la tastiera. È inoltre possibile seguire l'attività all'interno dei registri mentre si utilizza il dispositivo con il comando logcat Android Debug Bridge (adb):

 adb logcat
 

Fare un cambiamento

Aggiorna il codice sorgente seguendo questo elenco di modifiche di esempio.

  1. Dalla radice del tuo checkout ( aosp/ directory), vai al frameworks/native progetto Git frameworks/native :

     cd frameworks/native
     
  2. Inizia un progetto temporaneo con:

     repo start <some-name> .
     
  3. Modifica SurfaceFlinger.cpp per includere gli aggiornamenti dall'elenco modifiche nella seguente posizione:

     aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
     
  4. Costruisci il codice:

     m
     
  5. Aggiorna la build sul dispositivo:

     adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
     

Dovresti vedere un cambiamento di colore sul dispositivo.

Metti alla prova il tuo codice

Durante questa parte del codelab eseguiremo un test di esempio che si trova nell'albero dei sorgenti e sta già fallendo. Per eseguire il test localmente utilizzeremo Atest per testare il codice.

Per utilizzare il test:

  1. Correre:

     atest DevCodelabTest
     
  2. Il test fallirà; ora ripariamolo! Trova il codice sorgente del test non riuscito:

     atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
     
  3. Quindi guarda dentro:

     platform_testing/tests/example/devcodelab
     
  4. Per il file da modificare, prendere il nome del test e sostituire il . con / , in questo modo:

     android.test.example.devcodelab.DevCodelabTest
     

    diventa:

     src/android/test/example/devcodelab/DevCodelabTest.java
     
  5. Quindi modifica:

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

    Rimpiazzare:

     Assert.assertTrue(false)
     

    Con:

     Assert.assertTrue(true)
     
  6. Esegui nuovamente il test per verificare di aver corretto il test:

     atest DevCodelabTest
     

Carica il tuo codice per la revisione

Repo semplifica l'uso di Git raggruppando comandi come git clone per operare contemporaneamente su numerosi repository (o progetti) Git.

Consulta Strumenti di controllo del codice sorgente per panoramiche di Git e Repo con collegamenti alla documentazione completa sull'uso del codice sorgente Android. Vedere il repository AOSP per l'elenco completo dei progetti Git e dei singoli progetti (percorsi) per le filiali associate a ciascun progetto.

Utilizzerai il sistema di revisione del codice basato sul web di Gerrit per progetti in Git.

  1. Supponendo di aver apportato le modifiche nel frameworks/native progetto frameworks/native , eseguire questi comandi per caricarli:

     cd frameworks/native
    repo start codelab .
    git add .
    git commit
     
  2. Per il tuo messaggio di commit inserisci:

     Android codelab change
    Test: manual atest
     
  3. Carica la tua modifica:

     repo upload
     

Se hai successo, vedrai un messaggio simile a:

 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
 

Visualizza le tue modifiche in Gerrit

Vai al link stampato nel terminale simile a:

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

Questo completa il codice di avviamento per lo sviluppo della piattaforma Android. Vedere Invio di patch per i passaggi successivi e il resto di questo sito per tutti i dettagli sullo sviluppo di Android.

Annulla la modifica

Normalmente, dopo il test e la revisione / approvazione, invieresti la tua modifica in Gerrit e la fonderesti nel repository.

Invece, ai fini del codelab, ripristina l'elenco delle modifiche facendo clic su Abbandona in Gerrit.

Quindi abbandonare il ramo temporaneo associato nella directory frameworks / native project (o suoi sottotitoli):

 repo abandon codelab .
 

Ricorda anche di ripristinare le modifiche al file di test. Poiché non abbiamo repo start , git commit e repo upload la modifica, possiamo semplicemente ripristinare il file stesso, in questo modo (supponendo che tu sia nella aosp/platform_testing directory ):

 git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
 

A questo punto, il gioco è fatto! Bel lavoro!

Ottenere aiuto

Se si verificano errori durante questo codice, segnalarli utilizzando il collegamento di feedback sul sito nella parte inferiore di qualsiasi pagina. Invia domande al gruppo Android-Building .