Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Codelab per sviluppatori Android

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

Sebbene il percorso sia impegnativo, noi del team Android ci sforziamo di semplificare il tuo viaggio ad ogni versione. E apportiamo miglioramenti ogni giorno tramite il lavoro diretto nell'Android Open Source Project (AOSP).

Quindi siediti, avvia un terminale e facciamo la storia.

Obiettivi

La missione di questo codelab è duplice:

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

Prerequisiti

Di seguito è riportato l'elenco completo dei requisiti per questo codelab, derivato da quelli per lo sviluppo della piattaforma generale ( AOSP ).

Per prendere questo codelab, dovrai impostare:

Ambiente

In genere, gli utenti creano e sviluppano direttamente sulla workstation. Poiché potresti lavorare su vari terminali e molti dei comandi utilizzati sono specifici del terminale, dovrai rieseguirli in ogni sessione del terminale. In particolare, questi includono il source build/envsetup.sh e i comandi lunch .

Imposta la workstation

  1. Installa 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 email).

  6. Sincronizza il codice sorgente:

    repo sync -j16
    

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

Ogni estrazione del repository è rappresentata da un file manifest . È possibile avere più di un checkout di repository alla volta purché esistano in directory distinte. Ma nota che ogni checkout e build ammonta a circa 300 GB e cresce, quindi limitati a due o aumenta il tuo sistema con un'unità secondaria.

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

rm -rf aosp2

Crea il codice

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

Il target del dispositivo incluso di seguito, aosp_cf_x86_64_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 lampeggianti .

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

    source build/envsetup.sh
    
  2. Passa l'obiettivo di compilazione al comando pranzo, in questo modo:

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

    m
    

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

Crea istanza di Acloud

Acloud è uno strumento a riga di comando in AOSP che assiste gli utenti nella creazione di dispositivi Android virtuali, in questo caso Cuttlefish.

Se ci si trova nella stessa sessione di terminale utilizzata per creare il codice , procedere. Altrimenti, riesegui lo script envsetup.sh e lo stesso comando lunch utilizzato per primo. Poi:

  1. Crea un'istanza locale di Acloud con:

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

  3. Se richiesto, riavviare la stazione di lavoro affinché tutte le modifiche abbiano effetto.

  4. Seleziona il dispositivo Cuttlefish.

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

Puoi interagire con il dispositivo virtuale sulla tua workstation utilizzando il mouse e la tastiera. Puoi anche seguire l'attività all'interno dei log mentre utilizzi il tuo 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 progetto frameworks/native Git:

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

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

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Crea 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.

Testa il tuo codice

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

Per utilizzare il test:

  1. Correre:

    atest DevCodelabTest
    
  2. Il test fallirà; ora aggiustiamolo! Trova il codice sorgente del test fallito:

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

    platform_testing/tests/example/devcodelab
    
  4. Per modificare il file, prendi il nome del test e sostituisci il file . 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 di nuovo 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 funzionare su numerosi repository (o progetti) Git contemporaneamente.

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

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

  1. Supponendo che tu abbia apportato le modifiche nel frameworks/native progetto frameworks/native , esegui 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 la tua modifica in Gerrit

Vai al link stampato nel terminale simile a:

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

Questo completa il codelab iniziale per lo sviluppo della piattaforma Android. Vedere Invio di patch per i passaggi successivi e il resto di questo sito per i dettagli completi sullo sviluppo di Android.

Ripristina la modifica

Normalmente, dopo il test e la revisione / approvazione, invierai la tua modifica a Gerrit e la uniresti al 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 framework / progetto nativo (o i suoi sottotitoli):

repo abandon codelab .

Ricorda anche di ripristinare le modifiche al file di prova. 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 hai finito! Bel lavoro!

Ottenere aiuto

Se si verificano errori durante questo codelab, segnalarli utilizzando il collegamento Feedback sul sito in fondo a qualsiasi pagina. Invia domande al gruppo di costruzione di Android .