Costruire Android

Segui queste istruzioni per iniziare a costruire Android.

Allestire l'ambiente

Inizializzare l'ambiente con l' envsetup.sh script:

source build/envsetup.sh

o

. build/envsetup.sh

Vedere lo script alla piattaforma / build / envsetup.sh per le descrizioni di comandi correlati, tra cui il pranzo per la selezione di obiettivi di dispositivi e tapas per la creazione di applicazioni in modalità unbundling, come ad esempio l' applicazione di riferimento TV .

È necessario eseguire nuovamente il comando dopo ogni repo sync per raccogliere eventuali modifiche a tale script. Si noti che la sostituzione source con . (un singolo punto) salva alcuni caratteri e la forma breve è più comunemente usata nella documentazione.

I envsetup.sh diversi comandi importazioni di script che consentono di lavorare con il codice sorgente di Android, tra cui i comandi utilizzati in questo esercizio.

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

hmm

Scegliere un obiettivo

il pranzo

Scegliere quale bersaglio di costruire con lunch . lunch product_name - build_variant seleziona product_name come prodotto di accumulo, e build_variant come la variante di accumulo, e memorizza tali selezioni nell'ambiente da leggere da successive invocazioni di m altri comandi simili e.

La configurazione esatta può essere passata come argomento. Ad esempio, il comando seguente fa riferimento a una build completa per l'emulatore, con tutti i debug abilitati:

lunch aosp_arm-eng

Se eseguito senza argomenti, lunch viene richiesto di scegliere una destinazione dal menu. Vedere Selezione di un accumulo dispositivo per le configurazioni di compilazione di tutti i dispositivi esistenti.

Tutti gli obiettivi di build assumono la forma BUILD-BUILDTYPE , dove BUILD è un nome in codice riferimento alla particolare combinazione caratteristica. BUILDTYPE è uno dei seguenti.

Tipo di costruzione Utilizzo
utente Accesso limitato; adatto per la produzione
userdebug Come utente ma con accesso root e capacità di debug; preferito per il debug
ita Configurazione dello sviluppo con strumenti di debug aggiuntivi

La build userdebug dovrebbe comportarsi allo stesso modo della build utente, con la possibilità di abilitare un debug aggiuntivo che normalmente viola il modello di sicurezza della piattaforma. Ciò rende la build userdebug adatta ai test utente con maggiori capacità di diagnosi. Durante lo sviluppo con la build userdebug, seguire le linee guida userdebug .

La build eng dà la 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 alle build user e userdebug in modo che gli sviluppatori di dispositivi possano vedere come si comporta il codice in quegli ambienti.

Per ulteriori informazioni sulla creazione e in esecuzione su hardware reale, vedere Dispositivi lampeggiante .

tapas

Le tapas comando configura la costruzione di applicazioni in modalità unbundling. Seleziona le singole app da costruire dal sistema di build Android. A differenza di lunch , tapas non richiede la costruzione di immagini per un dispositivo.

Eseguire tapas help per ulteriori informazioni sul comando.

Costruire il codice

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

Tutto Build with m . m in grado di gestire le attività in parallelo con un -jN argomento. Se non si fornisce un -j argomento, il sistema di compilazione seleziona automaticamente un conteggio parallelo compito che pensa è ottimale per il vostro sistema.

m

Come spiegato in precedenza, è possibile costruire moduli specifici invece che l'immagine completa dispositivo elencando i loro nomi nella vostra m linea di comando. Inoltre, m fornisce alcuni pseudotargets per scopi speciali. Alcuni esempi sono:

  • droid - m droid è la corporatura normale. Questo target è qui perché il target predefinito richiede un nome.
  • all - m all costruisce tutto ciò che m droid fa, oltre a tutto ciò che non ha il droid tag. Il server di build gestisce questo per assicurarsi che tutto ciò che è nella struttura ed ha Android.mk file di costruisce.
  • m - Funziona costruisce dalla cima dell'albero. Questo è utile perché è possibile eseguire make dall'interno sottodirectory. Se avete il TOP set di variabile d'ambiente, si utilizza tale. Se non lo fai, cerca l'albero dalla directory corrente, cercando di trovare la parte superiore dell'albero. O si può costruire tutto l'albero del codice sorgente eseguendo m senza argomenti o obiettivi specifici di costruzione specificando i loro nomi.
  • mma - Costruisce tutti i moduli nella directory corrente, e le loro dipendenze.
  • mmma - Costruisce tutti i moduli nelle directory in dotazione, e le loro dipendenze.
  • croot - cd alla cima dell'albero.
  • clean - m clean cancella tutti i file intermedi e di uscita per questa configurazione. Questo è lo stesso di rm -rf out/ .

Eseguire m help per vedere ciò che gli altri pseudotargets m fornisce.

Esecuzione della build

Puoi eseguire la build su un emulatore o eseguirne il flashing su un dispositivo. Perché hai già selezionato il vostro target di compilazione con lunch , è improbabile per l'esecuzione su un target diverso da quello che è stato costruito per.

Lampeggiante con avvio rapido

A lampeggiare un dispositivo, utilizzare fastboot , che dovrebbe essere incluso nel tuo percorso dopo una generazione corretta. Vedere lampeggiante un dispositivo per le istruzioni.

Emulazione di un dispositivo Android

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

emulator

Comprensione delle impronte digitali

Per tenere traccia e segnalare problemi legati a una particolare build Android, è importante comprendere l'impronta digitale della build. L'impronta digitale della build è una stringa univoca leggibile dall'uomo contenente le informazioni del produttore emesse per ciascuna build. Vedere la descrizione impronte digitali di parametri di costruzione sezione della definizione di compatibilità Android Document (CDD) per la sintassi precisa.

L'impronta digitale della build rappresenta una particolare implementazione e revisione di Android. Questa chiave univoca consente agli sviluppatori di app e ad altri di segnalare problemi con versioni firmware specifiche. Vedere bug report per il processo di emissione di segnalazione Android.

Un'impronta digitale della build incapsula tutti i dettagli di implementazione di Android:

  • API: Android e native, nonché comportamenti delle API soft
  • API principale e alcuni comportamenti dell'interfaccia utente del sistema
  • Requisiti di compatibilità e sicurezza definiti nel CDD
  • Le specifiche dei prodotti e l' uso di funzionalità impostazione impiegato da applicazioni per dispositivi di destinazione che soddisfano i requisiti previsti
  • Implementazioni di componenti hardware e software

Vedere la CDD per i dettagli completi e Aggiunta di un nuovo dispositivo per le istruzioni sulla creazione di un completamente nuovo dispositivo Android.

Risoluzione dei problemi di errori comuni di compilazione

Versione Java sbagliata

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:

  • La mancata installazione del JDK corretto come specificato nei requisiti JDK . Assicurati di aver seguito la procedura descritta in Configurazione dell'ambiente e scelta di un bersaglio .
  • Un altro JDK precedentemente installato appare nel tuo percorso. Anteponi il JDK corretto all'inizio del percorso o rimuovi il JDK problematico.

Nessuna autorizzazione USB

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

Se ADB era già in esecuzione e non può connettersi al dispositivo dopo ottenere quelle regole stabilite, si può uccidere con adb kill-server . Questo comando fa riavviare ADB con la nuova configurazione.