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

Costruire Android

Segui queste istruzioni per iniziare a creare Android.

Imposta l'ambiente

Inizializza l'ambiente con lo script envsetup.sh :

source build/envsetup.sh

o

. build/envsetup.sh

Vedi lo script su platform / build / envsetup.sh per le descrizioni dei comandi correlati, incluso il lunch per la selezione dei target dei dispositivi e le tapas per la creazione di app disaggregate, come l' app TV di riferimento .

Sarà necessario emettere nuovamente questo comando dopo ogni repo sync per rilevare eventuali modifiche a quello script. Si noti che la sostituzione di source con . (un singolo punto) salva alcuni caratteri e la forma breve è più comunemente usata nella documentazione.

Lo script envsetup.sh importa diversi comandi che ti consentono di lavorare con il codice sorgente di Android, inclusi i comandi utilizzati in questo esercizio. Ecco alcuni importanti esempi di comandi:

  • lunch - lunch product_name - build_variant seleziona product_name come prodotto da costruire e build_variant come variante da costruire e memorizza tali selezioni nell'ambiente per essere lette dalle successive invocazioni di m altri comandi simili.
  • m - Esegue le build dalla cima dell'albero. Questo è utile perché puoi eseguire make dall'interno delle sottodirectory. Se hai impostato la variabile d'ambiente TOP , la usa. In caso contrario, cerca l'albero dalla directory corrente, cercando di trovare la parte superiore dell'albero. Puoi costruire l'intero albero del codice sorgente eseguendo m senza argomenti o costruire target specifici specificandone il nome.
  • mma : crea tutti i moduli nella directory corrente e le relative dipendenze.
  • mmma : mmma tutti i moduli nelle directory fornite e le relative dipendenze.
  • croot - cd nella parte superiore dell'albero.

Per visualizzare l'elenco completo dei comandi disponibili, eseguire:

hmm

Scegli un obiettivo

Scegli quale obiettivo costruire con il lunch . La configurazione esatta può essere passata come argomento. Ad esempio, il comando seguente fa riferimento a una build completa per l'emulatore, con tutto il debug abilitato:

lunch aosp_arm-eng

Se eseguito senza argomenti, il lunch richiede di scegliere un obiettivo dal menu. Vedere Selezione di una build di dispositivi per le configurazioni di build di tutti i dispositivi esistenti.

Tutti i target di costruzione assumono la forma BUILD-BUILDTYPE , dove BUILD è un nome in codice che si riferisce alla particolare combinazione di caratteristiche. BUILDTYPE è uno dei seguenti.

buildtype Uso
utente Accesso limitato; adatto per la produzione
userdebug Come utente ma con accesso root e funzionalità di debug; preferito per il debug
ita Configurazione di sviluppo con strumenti di debug aggiuntivi

La build userdebug dovrebbe comportarsi allo stesso modo della build dell'utente, con la possibilità di abilitare il debug aggiuntivo che viola normalmente il modello di sicurezza della piattaforma. Questo rende userdebug una buona build per i test degli utenti con maggiori capacità di diagnosi. Quando si sviluppa con la build userdebug, seguire le linee guida userdebug .

La build eng dà priorità alla produttività ingegneristica per gli ingegneri che lavorano sulla piattaforma. La build eng disattiva varie ottimizzazioni utilizzate per fornire una buona esperienza utente. Altrimenti, la build eng ha un comportamento simile a quello dell'utente e delle build userdebug in modo che gli sviluppatori di dispositivi possano vedere come si comporta il codice in quegli ambienti.

Per ulteriori informazioni sulla creazione e l'esecuzione sull'hardware effettivo, vedere Esecuzione di build .

Costruire il codice

Questa sezione è un breve riepilogo per assicurarsi che l'installazione sia completa.

Costruisci tutto con m . m può gestire compiti paralleli con un argomento -jN . Se non si fornisce un argomento -j , il sistema di generazione seleziona automaticamente un conteggio di attività parallelo che ritiene ottimale per il proprio sistema.

m

Come spiegato sopra, è possibile creare moduli specifici anziché l'immagine completa del dispositivo elencando i loro nomi nella riga di comando m . Inoltre, m fornisce alcuni pseudotarget per scopi speciali. Alcuni esempi sono:

  • droid - m droid è la build normale. Questa destinazione è qui perché la destinazione predefinita richiede un nome.
  • all - m all costruisce tutto ciò che fa m droid , più tutto ciò che non ha il tag droid . Il server di build esegue questo per assicurarsi che tutto ciò che è nella struttura e abbia un file Android.mk venga Android.mk .
  • clean - m clean elimina tutti i file di output e intermedi per questa configurazione. È lo stesso di rm -rf out/ .

Esegui m help per vedere quali altri pseudotargets m fornisce.

Eseguirlo!

Puoi eseguire la build su un emulatore o eseguirne il flash su un dispositivo. Poiché hai già selezionato il tuo obiettivo di costruzione con il lunch , è improbabile che venga eseguito su un obiettivo diverso da quello per cui è stato creato.

Lampeggiante con avvio rapido

Per eseguire il fastboot un dispositivo, utilizzare fastboot , che dovrebbe essere incluso nel percorso dopo una compilazione riuscita. Consulta la sezione Esecuzione del flashing di un dispositivo per istruzioni.

Emulazione di un dispositivo Android

L'emulatore viene aggiunto automaticamente al tuo percorso dal processo di compilazione. Per eseguire l'emulatore, digitare:

emulator

Risoluzione dei problemi comuni di errore

Versione Java errata

Se si sta tentando di costruire una versione di Android che è in contrasto con la versione di Java, make interrompe con un messaggio del tipo:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

Ecco le probabili cause e soluzioni:

Python versione 3

Repo è basato su particolari funzionalità di Python 2.x ed è incompatibile con Python 3. Per utilizzare Repo, installa Python 2.x:

apt-get install python

File system senza distinzione tra maiuscole e minuscole

Se stai costruendo su un file system HFS su macOS, potresti riscontrare un errore come:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Seguire le istruzioni in Creazione di un'immagine del disco con distinzione tra maiuscole e minuscole .

Nessuna autorizzazione USB

Per impostazione predefinita sulla maggior parte dei sistemi Linux, gli utenti non privilegiati non possono accedere alle porte USB. Se viene visualizzato un errore di autorizzazione negata, seguire le istruzioni in Configurazione dell'accesso USB .

Se [adb] (adb.md) era già in esecuzione e non è possibile connettersi al dispositivo dopo aver impostato tali regole, è possibile ucciderlo con adb kill-server . Questo comando fa riavviare adb con la nuova configurazione.