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 di piattaforme Android.

Sebbene il percorso sia impegnativo, il team di Android si sforza di semplificare il tuo viaggio, ad ogni rilascio. E il team apporta miglioramenti ogni giorno attraverso il lavoro diretto nell'Android Open Source Project (AOSP).

Quindi siediti, accendi un terminale e facciamo la storia.

Obiettivi

La missione di questo codelab è duplice:

  1. Per darti un piccolo assaggio di come è il flusso di lavoro degli sviluppatori per gli ingegneri Android che lavorano sulla piattaforma (il sistema operativo).
  2. Vi incoraggio a fornire un feedback in giro strumenti di Android, la documentazione, e il flusso di lavoro degli sviluppatori.

Prerequisiti

L'elenco dei requisiti per questo codelab sono derivati da quelli per la piattaforma generale ( AOSP ) lo sviluppo. Per utilizzare questo codelab, imposta quanto segue:

Ambiente

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

Allestire la postazione di lavoro

  1. Installare i pacchetti necessari sulla workstation.
  2. Mentre era ancora in un terminale, installare Repo e ottenere 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. Inizializzare il ramo principale 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 -j8
    

Le sincronizzazioni iniziali possono richiedere un'ora o più. Vedi le istruzioni per il download per i relativi dettagli, mentre si attende.

Ogni cassa di pronti contro termine è rappresentato da un file manifesto . È consentito avere più di 1 checkout del repository alla volta, purché esistano in directory distinte. Ma nota che ogni checkout e build ammonta a circa 300 GB di utilizzo (e in crescita), quindi limitati a 2 checkout del repository o aumenta il tuo sistema con un'unità secondaria.

Costruisci il codice

Per costruire Android, è necessario selezionare un bersaglio tipo di dispositivo di costruire con il lunch di comando. Un target è una permutazione del dispositivo, come un modello o un fattore di forma specifico.

L'obiettivo dispositivo riportato qui di seguito, aosp_cf_x86_64_phone-userdebug , vi permette di costruire l' Seppie dispositivo Android virtuale per testare senza un dispositivo fisico.

Per costruire e aggiornare un dispositivo fisico, invece, scegliere un altro bersaglio e seguire le istruzioni per lampeggiante dispositivi .

  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 il target di build al comando lunch, in questo modo:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Costruire il codice da qualsiasi punto cassa con:

    m
    

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

Crea un'istanza Acloud

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

Se siete nella stessa sessione di terminale utilizzato per costruire il codice , procedere. In caso contrario, eseguire nuovamente envsetup.sh sceneggiatura e lo stesso lunch di comando non è stato utilizzato prima. Quindi

  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!

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

adb logcat

Fare un cambiamento

Aggiornare il codice sorgente seguendo questo esempio elenco modifiche .

  1. Dalla radice del checkout ( aosp/ directory), passare alla frameworks/native progetto Git:

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

    repo start <some-name> .
    
  3. Modifica SurfaceFlinger.cpp per includere gli aggiornamenti dal elenco modifiche al seguente indirizzo:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Trova queste due righe:

    postFrame();
    postComposition();
    
  5. Sostituisci queste due righe con le seguenti:

    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. Costruisci il codice:

    m
    
  7. Aggiorna la build sul dispositivo:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Se ti viene chiesto di selezionare un dispositivo, scegli quello che mostra il tempo trascorso più breve. (Questo è probabilmente l'ultimo della lista che vedete.) Per vedere tutte le istanze dei dispositivi virtuali, utilizzare la acloud list e acloud list -v comandi.

Verifica di vedere un cambiamento di colore sul dispositivo selezionato simile a quello mostrato nella Figura 1.

Example of a successful color change

Figura 1. aspetto dello schermo dopo il cambio di colore di successo

Metti alla prova il tuo codice

Questa parte del codelab utilizza un test di esempio che si trova nell'albero dei sorgenti e fallisce. Questo impiega Atest per eseguire il test a livello locale e testare il codice.

Per utilizzare il test, seguire queste istruzioni:

  1. Correre:

    atest DevCodelabTest
    
  2. Il test fallirà. Per risolverlo, trova il codice sorgente del test non riuscito:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Allora guarda qui

    platform_testing/tests/example/devcodelab
    
  4. Per ottenere il file da modificare, prendere il nome del test in android.test.example.devcodelab.DevCodelabTest e sostituire il . con / , per ottenere questo risultato:

    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)
    

    insieme a

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

    atest DevCodelabTest
    

Carica il tuo codice per la revisione

Repo semplifica l'utilizzo Git per riunire comandi come git clone di lavoro in numerosi repository Git (o progetti) in una sola volta.

Vedere Strumenti di controllo del codice sorgente per una panoramica di Git e Repo, con collegamenti documentazione completa su come lavorare con il codice sorgente di Android. Vedere la repository AOSP per l'elenco completo dei progetti Git e dei singoli progetti (percorsi) per rami associati a ciascun progetto.

Per la revisione del codice dei vostri progetti in Git, userete il Gerrit sistema di revisione del codice basato sul web.

  1. Supponendo che hai fatto le modifiche nel frameworks/native del progetto, eseguire questi comandi per caricarle:

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

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

    repo upload
    

Se hai successo, vedrai un messaggio simile a questo:

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 il tuo cambiamento in Gerrit

Vai al link, stampato nel terminale, che assomiglia a questo:

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

Questo completa il codelab di partenza per lo sviluppo della piattaforma Android. Vedi qua il Submitting Patches per i prossimi passi, e per tutti i dettagli sullo sviluppo di Android, vedere il resto di questo sito.

Ripristina il tuo cambiamento

Normalmente, dopo il test e dopo la revisione e l'approvazione, invii la tua modifica in Gerrit e la unisci nel repository.

Invece, per le finalità del presente codelab, ripristinare il vostro elenco modifiche cliccando Abandon in Gerrit.

Poi abbandonare il ramo associato temporaneo nel frameworks/native directory del progetto (o le sue sottodirectory):

repo abandon codelab .

Ricorda anche di ripristinare le modifiche apportate al file di prova. Dal momento che non hai repo start , git commit , e repo upload il cambiamento, è possibile ripristinare il file stesso. Supponendo che siete nella aosp/platform_testing directory , utilizzare la seguente per reimpostare il file:

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

A questo punto hai finito! Bel lavoro!

Ottenere aiuto

In caso di errori durante questo codelab, segnalalo utilizzando l'Issue Tracker collegamento sul fondo ad ogni pagina. Invia le domande ai l' android-building gruppo.