Crea Android

Segui le istruzioni riportate in questa pagina per compilare 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 compilare, 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 una sinossi dell'ambiente di destinazione e di compilazione:

============================================
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_config-build_variant

I componenti di questa stringa sono:

  • product_name è il nome del prodotto che vuoi creare, ad esempio aosp_cf_x86_64_phone o aosp_husky. Il tuo product_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 Android Open Source.
    • (Facoltativo) cf viene incluso quando si prevede di eseguire il target all'interno dell'emulatore Cuttlefish.
    • Architettura e hardware (nome in codice), ad esempio x86_64_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 chiamata trunk_staging. Una configurazione di release identifica determinate funzionalità e codice alla base dei flag di lancio delle funzionalità e che sono attivati o disattivati per una build. Per saperne di più sulle configurazioni di rilascio, consulta Impostare i valori di lancio dei flag delle funzionalità.

  • 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 il rendimento 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 è ideale per lo sviluppo quotidiano se non ti interessano le prestazioni e la potenza.

Se esegui lunch senza argomenti, viene fornito un elenco di target comuni. Puoi anche creare le tue stringhe target riunendo gli elementi della stringa target utilizzando le informazioni riportate in questa pagina e i nomi in codice che rappresentano hardware Google specifici in Nomi in codice dei dispositivi.

Visualizza il target corrente

Per visualizzare le impostazioni attuali per la pausa pranzo, esegui:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Compila il codice

Esegui il comando seguente per compilare il target. A seconda delle specifiche della tua workstation, la prima build potrebbe richiedere meno di un'ora o anche alcune ore. 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 compilato dalla parte superiore dell'albero, quindi puoi eseguirlo da sottodirectory.m Se hai impostato la variabile di ambiente TOP, il comando m la utilizza. Se TOP non è impostato, il comando m cerca nell'albero dalla directory corrente, cercando 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 numero 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 compilando AOSP 8 o versioni precedenti, m potrebbe abortire 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 è 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 ilJDK corretto all'inizio del percorso o rimuovi quello problematico.