Segui le istruzioni riportate in questa pagina per creare Android.
Configura l'ambiente di build
Dalla directory di lavoro, esegui l'origine dello script envsetup.sh per configurare l'ambiente di build:
source build/envsetup.shQuesto script importa diversi comandi che ti consentono di lavorare con il codice sorgente di Android, inclusi quelli utilizzati in questa pagina. Per visualizzare l'origine dello script, consulta platform/build/envsetup.sh.
Per visualizzare la guida integrata, digita hmm.
Scegliere un target
Prima di creare Android, devi identificare un target da creare. Un target
riflette la piattaforma di destinazione per cui stai sviluppando. Per identificare il target da compilare, utilizza il comando lunch seguito da una stringa che rappresenta il target. Ad esempio:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugDovresti visualizzare un riepilogo dell'ambiente di build e di destinazione:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================La stringa che rappresenta il target ha il seguente formato:
lunch product_name-release_config-build_variantI componenti di questa stringa sono:
product_nameè il nome del prodotto che vuoi creare, ad esempioaosp_cf_x86_64_only_phoneoaosp_husky. Il tuoproduct_namespecifico può seguire il tuo formato per il tuo dispositivo, ma il formato utilizzato da Google per i suoi dispositivi è composto da questi elementi:aospsi riferisce alla piattaforma open source di Android.- (facoltativo)
cfè incluso quando il target è destinato a essere eseguito all'interno dell'emulatore Cuttlefish. - Architettura e hardware (nome in codice), ad esempio
x86_64_only_phoneohusky, che è il nome in codice di Pixel 8 Pro. Per un elenco dei nomi in codice dei dispositivi Google, vedi Nomi in codice dei dispositivi.
release_configè impostato su una configurazione della release, ad esempio la configurazione della release di sviluppo chiamataaosp_current. Una configurazione di rilascio identifica determinate funzionalità e codice che si trovano dietro i flag di lancio delle funzionalità e sono abilitate o disabilitate per una build. Per saperne di più sulle configurazioni di rilascio, vedi Impostare i valori di lancio dei flag delle funzionalità.La parte
build_variantdella stringa può essere uno dei tre valori nella tabella seguente:build_variantDescrizione userQuesta variante di compilazione fornisce un accesso limitato alla sicurezza ed è adatta per produzione. userdebugQuesta variante di compilazione aiuta gli sviluppatori di dispositivi 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 compilazione ha tempi di compilazione più rapidi ed è più adatta allo sviluppo quotidiano se non ti interessano le prestazioni e il consumo energetico.
Se esegui lunch senza argomenti, viene fornito un elenco di target comuni.
Puoi anche creare le tue stringhe di destinazione combinando gli elementi della stringa di destinazione utilizzando le informazioni riportate in questa pagina e i nomi in codice che rappresentano hardware Google specifici in Nomi in codice dei dispositivi.
Visualizzare il target attuale
Per visualizzare le impostazioni attuali del pranzo, esegui:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Crea il codice
Esegui questo comando per creare 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.
mL'output della build viene visualizzato in $OUT_DIR. Se
crei target diversi, ogni build del target viene visualizzata in
$OUT_DIR.
Il comando m viene eseguito dalla parte superiore dell'albero, quindi puoi eseguire m dalle sottodirectory. Se hai impostato la variabile di ambiente TOP, il comando m
la utilizza. Se TOP non è impostato, il comando m cerca l'albero dalla
directory corrente, tentando di trovare 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 compilazione seleziona automaticamente un conteggio delle 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 crea
nulla, ma analizza e convalida la struttura della build. Per un elenco di obiettivi
validi, digita m help.
Risolvere i problemi relativi agli errori di generazione (Android 17 o versioni successive)
Questa sezione contiene istruzioni per la gestione degli errori di sola lettura derivanti dal tentativo di modificare il codebase di sola lettura di AOSP durante la compilazione.
Tentativo di creare risultati in errori del file system di sola lettura
Durante la compilazione, l'albero dei sorgenti AOSP è di sola lettura. Se la build che stai eseguendo tenta di modificare l'albero delle origini durante la configurazione del prodotto o qualsiasi altra parte della build, la build potrebbe non riuscire e segnalare errori del file system di sola lettura. Queste opzioni possono essere utilizzate per modificare temporaneamente l'albero delle origini in lettura/scrittura:
Per modificare l'intero albero delle origini in lettura/scrittura durante la build, aggiungi
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=trueall'ambiente di build.Per modificare una parte dell'albero in lettura/scrittura durante la build, utilizza
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ..."I percorsi devono essere i percorsi delle directory in cui devono essere consentite le scritture, rispetto alla parte superiore dello spazio di lavoro.
Risolvere i problemi relativi agli errori di generazione (8.0 o versioni precedenti)
Se stai creando AOSP 8 o versioni precedenti, m potrebbe interrompersi quando rileva 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 cause e le soluzioni più probabili:
- Non hai installato l'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. Aggiungi il JDK corretto all'inizio del percorso o rimuovi il JDK problematico.