Crea Android

Segui le istruzioni riportate in questa pagina per creare Android.

Configura l'ambiente di build

Dalla directory di lavoro, esegui lo script envsetup.sh per configurare l'ambiente di build:

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 creare Android, devi identificare un target da creare. Un target riflette la piattaforma di destinazione per cui stai creando la build. 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_only_phone-aosp_current-userdebug

Dovresti vedere una sinossi del target e dell'ambiente di build:

============================================
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_variant

I componenti di questa stringa sono:

  • product_name è il nome del prodotto che vuoi creare, ad esempio aosp_cf_x86_64_only_phone o aosp_husky. Il tuo product_name specifico può seguire il tuo formato per il dispositivo, ma il formato utilizzato da Google per i suoi dispositivi ha questi componenti:

    • aosp si riferisce ad Android Open Source Project.
    • Facoltativamente, cf è incluso quando il target è destinato a essere eseguito nell'emulatore Cuttlefish.
    • Nome in codice dell'architettura e dell'hardware, ad esempio x86_64_only_phone o husky, che è il nome in codice di Pixel 8 Pro. Per un elenco dei nomi in codice dei dispositivi Google, consulta Nomi in codice dei dispositivi.
  • release_config è impostato su una configurazione della release, ad esempio la configurazione della release di sviluppo denominata aosp_current. Una configurazione della release identifica determinate funzionalità e codice che si trovano dietro i flag di lancio delle funzionalità e sono attivati o disattivati per una build. Per saperne di più sulle configurazioni della release, consulta Imposta i valori di lancio dei flag delle funzionalità.

  • La parte build_variant della stringa può essere uno dei tre valori nella tabella seguente:

    build_variant Descrizione
    user Questa variante di compilazione fornisce un accesso di sicurezza limitato ed è adatta alla produzione.
    userdebug Questa variante di compilazione aiuta gli sviluppatori di dispositivi a comprendere le prestazioni e la potenza delle release in fase di sviluppo. Quando sviluppi con una userdebug build, segui le linee guida per userdebug.
    eng Questa variante di compilazione ha un tempo di compilazione più rapido ed è più adatta agli ambienti di sviluppo quotidiani (dove le prestazioni e la potenza sono meno importanti).

Se esegui lunch senza argomenti, lunch fornisce un elenco di target comuni. Per creare stringhe di target personalizzate, combina gli elementi della stringa di target con i nomi in codice dell'hardware. Per un elenco dei nomi in codice, consulta Nomi in codice dei dispositivi.

Visualizza il target attuale

Per visualizzare le impostazioni di lunch attuali, esegui:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Crea il codice

Esegui il seguente comando per creare il target. A seconda delle specifiche della workstation, la prima build potrebbe richiedere meno di un'ora o fino a qualche ora. Le build successive richiedono molto meno tempo.

m

L'output della build viene visualizzato in $OUT_DIR. Se crei target diversi, ogni build di target viene visualizzata in $OUT_DIR.

Il comando m crea la build 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 le 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.

Risolvi i problemi relativi agli errori di build

Questa sezione contiene istruzioni per la gestione degli errori di build.

Errori del file system di sola lettura (Android 17 e versioni successive)

Durante la build, l'albero di origine AOSP è di sola lettura. Se la build che stai eseguendo tenta di modificare l'albero di origine durante la configurazione del prodotto o in qualsiasi altra parte della build, la build potrebbe non riuscire e segnalare errori del file system di sola lettura. Puoi utilizzare queste opzioni per modificare temporaneamente l'albero di origine in lettura/scrittura:

  • Per modificare l'intero albero di origine in lettura/scrittura durante la build, aggiungi BUILD_BROKEN_SRC_DIR_IS_WRITABLE=true all'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, relative alla parte superiore dello spazio di lavoro.

Versione Java errata (Android 8.0 e versioni precedenti)

Se stai creando Android 8.0 (livello API 26) e 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 probabili:

  • Non è installato il JDK corretto. Per saperne di più, consulta 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.