Segui le istruzioni in questa pagina per sviluppare Android.
Configurare l'ambiente di compilazione
Dalla directory di lavoro, esegui lo script envsetup.sh
per configurare l'ambiente di compilazione:
source build/envsetup.sh
Questo script importa diversi comandi che ti consentono di lavorare con il codice sorgente di Android, inclusi i comandi utilizzati in questa pagina. Per visualizzare il codice sorgente dello
script, consulta
platform/build/envsetup.sh
.
Per visualizzare la guida integrata, digita hmm
.
Scegli un target
Prima di compilare Android, devi identificare un target da compilare. Un target riflette la piattaforma di destinazione per cui stai creando. Per identificare il target da creare, utilizza il comando lunch
seguito da una stringa che rappresenta il target. Ad esempio:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Dovresti vedere un riepilogo del tuo target e dell'ambiente di build:
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
La stringa che rappresenta il target ha il seguente formato:
lunch product_name-release-build_variant
I componenti di questa stringa sono:
product_name
è il nome del prodotto che vuoi creare, ad esempioaosp_cf_x86_64_phone
oaosp_husky
. Il tuoproduct_name
specifico può seguire il formato del tuo dispositivo, ma il formato utilizzato da Google per i suoi dispositivi è composto dai seguenti componenti:aosp
si riferisce alla piattaforma open source Android.- (Facoltativo)
cf
è incluso se la destinazione deve essere eseguita nell'emulatore Cuttlefish. - Architettura e hardware (nome in codice), come
x86_64_phone
ohusky
, che è il nome in codice di Pixel 8 Pro. Per l'elenco dei nomi in codice per i dispositivi Google, vedi Nomi in codice dei dispositivi.
release
è impostato sutrunk_staging
.La parte
build_variant
della stringa può essere uno dei tre valori riportati nella tabella seguente:build_variant
Descrizione user
Questa variante di compilazione fornisce un accesso alla sicurezza limitato ed è adatta alla produzione. userdebug
Questa variante di build aiuta gli sviluppatori di dispositivi a comprendere le prestazioni e la potenza delle release in fase di sviluppo. Quando sviluppi con una build userdebug
, segui le linee guida per userdebug.eng
Questa variante di build ha tempi di compilazione più rapidi ed è più adatta per lo sviluppo quotidiano se le prestazioni e la potenza non ti interessano.
Se esegui lunch
senza argomenti, viene fornito un elenco di target comuni.
Puoi anche creare stringhe di destinazione personalizzate unendo gli elementi della stringa di destinazione utilizzando le informazioni in questa pagina e i nomi in codice che rappresentano l'hardware Google specifico in nomi in codice dispositivo.
Visualizza il target attuale
Per visualizzare le impostazioni attuali per il pranzo, esegui:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Crea il codice
Esegui il comando seguente per compilare il target. A seconda delle specifiche della workstation, la prima build potrebbe richiedere meno di un'ora e fino a qualche ora. Le build successive richiedono molto meno tempo.
m
L'output della build viene visualizzato in $OUT_DIR
. Se crei diversi target, ogni compilazione del target viene visualizzata in $OUT_DIR
.
Il comando m
viene creato dall'alto della struttura ad albero, quindi puoi eseguire m
dalle sottodirectory. Se hai impostato la variabile di ambiente TOP
, il comando m
la utilizzerà. Se il criterio TOP
non è impostato, il comando m
cerca nell'albero della
directory corrente, cercando di individuare la parte superiore dell'albero.
Il comando m
può gestire attività parallele con un argomento -jN
. Se non
fornisci un argomento -j
, il sistema di build seleziona automaticamente un conteggio di attività parallele
che ritiene ottimale per il tuo sistema.
Puoi creare moduli specifici anziché l'immagine completa del dispositivo elencando i nomi dei moduli nella riga di comando m
. Inoltre, il comando m
fornisce alcuni pseudo target, chiamati obiettivi. Ad esempio, m nothing
non compila nulla, ma analizza e convalida la struttura di compilazione. Per un elenco di scopi validi, digita m help
.
Risolvere gli errori di compilazione (8.0 o versioni precedenti)
Se stai creando AOSP 8 o versioni precedenti, m
potrebbe interrompersi quando riscontra un problema con la tua versione di Java. Ad esempio, potresti ricevere questo messaggio:
************************************************************
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:
- Non è stato possibile installare il JDK corretto come specificato nelle sezioni JDK di Configurazione per lo sviluppo AOSP (2.3 - 8.0).
- Nel percorso è presente un altro JDK installato in precedenza. Anteponi il JDK corretto all'inizio del percorso o rimuovi il JDK problematico.