Criar para o Android

Siga as instruções desta página para fazer builds do Android.

Configurar o ambiente de build

No diretório de trabalho, crie o script envsetup.sh para configurar seu ambiente de build:

source build/envsetup.sh

Esse script importa vários comandos que permitem trabalhar com o código-fonte do Android, incluindo os comandos usados nesta página. Para conferir a origem do script, consulte platform/build/envsetup.sh. Para conferir a ajuda integrada, digite hmm.

Escolher um destino

Antes de criar para o Android, é preciso identificar o destino do que será criado. Um destino reflete a plataforma para que você está criando. Para identificar seu destino de criação, use o comando lunch seguido por uma string representando o destino. Exemplo:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Você vai ver uma sinopse do destino e do ambiente de 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
============================================

A string que representa o destino tem este formato:

lunch product_name-release_config-build_variant

Estes são os componentes dessa string:

  • O product_name é o nome do produto que você quer criar, como aosp_cf_x86_64_phone ou aosp_husky. Seu product_name pode seguir um formato específico para seu dispositivo, mas o formato que o Google usa para os dispositivos dele tem estes componentes:

    • aosp se refere ao Android Open Source Platform (AOSP).
    • (opcional) cf é incluído quando o destino está programado para ser executado no emulador Cuttlefish.
    • Arquitetura e hardware (codinome), como x86_64_phone ou husky, que é o codinome do Pixel 8 Pro. Para consultar uma lista dos codinomes de dispositivos do Google, acesse Codinomes de dispositivos.
  • A release_config está definida como uma configuração de lançamento, como a configuração de lançamento de desenvolvimento chamada trunk_staging. Uma configuração de lançamento identifica determinados recursos e códigos que são responsáveis por flags de lançamento de recursos e estão ativados ou desativados para um build. Para saber mais sobre as configurações de lançamento, consulte Definir os valores de flags de lançamento de recursos.

  • A parte build_variant da string pode ter um dos três valores da tabela abaixo:

    build_variant Descrição
    user Esta variante de build oferece acesso de segurança limitado e é adequada para produção.
    userdebug Esta variante de build ajuda os desenvolvedores de dispositivos a entender o desempenho e a potência das versões em desenvolvimento. Ao desenvolver com um build userdebug, siga as Diretrizes de userdebug.
    eng Esta variante diminui o tempo de build e é mais adequada para o desenvolvimento diário quando você não se importa com o desempenho e a potência.

Se você executar lunch sem qualquer argumento, uma lista de destinos comuns será fornecida. Você também pode criar suas próprias strings de destino combinando os elementos da string de destino usando as informações desta página e os codinomes que representam um hardware do Google na lista Codinomes de dispositivos.

Conferir o destino atual

Para conferir as configurações de lançamento, execute:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

Criar o código

Execute o seguinte comando para criar seu destino. Dependendo da especificação da sua estação de trabalho, o primeiro build pode levar menos de uma hora ou até algumas horas. Os próximos vão levar muito menos tempo.

m

A saída do seu build aparece em $OUT_DIR. Se você criar para destinos diferentes, cada build vai aparecer no $OUT_DIR.

O comando m começa a executar os builds do topo da árvore. Assim, você pode executar m nos subdiretórios. Se você tiver a variável de ambiente TOP definida, o comando m vai usá-la. Se TOP não estiver definida, o comando m vai buscar a árvore no diretório atual para encontrar o topo dela.

O comando m pode processar tarefas paralelas com um argumento -jN. Se você não fornecer um argumento -j, o sistema de build vai selecionar automaticamente a contagem de tarefas paralelas que julgar ser ideal para seu sistema.

Você pode criar módulos específicos em vez da imagem completa do dispositivo listando os nomes dos módulos na sua linha de comando m. Além disso, o comando m fornece alguns pseudodestinos, chamados de metas. Por exemplo, m nothing não cria nada, mas analisa e valida a estrutura do build. Para conferir uma lista de metas válidas, digite m help.

Resolver erros de build (8.0 ou anterior)

Se você estiver criando no AOSP 8 ou anterior, m poderá encerrar o processo quando encontrar um problema com sua versão Java. Por exemplo, você poderá receber esta mensagem:

************************************************************
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
************************************************************

Estas são as prováveis causas e soluções:

  • Você falhou ao instalar o JDK correto conforme especificado nas seções de Configurar para o desenvolvimento no AOSP (2.3 a 8.0).
  • Outro JDK instalado anteriormente está aparecendo no seu caminho. Adicione o JDK correto ao início do seu caminho ou remova o JDK problemático.