Construir Android

Siga as instruções nesta página para criar o Android.

Configure seu ambiente de construção

Em seu diretório de trabalho, crie o script envsetup.sh para configurar seu ambiente de compilação:

source build/envsetup.sh

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

Escolha um alvo

Antes de construir o Android, você deve identificar um destino para construir. Uma meta reflete a plataforma-alvo para a qual você está construindo. Para identificar seu destino a ser construído, use o comando lunch seguido por uma string representando o destino. Por exemplo:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Ver a meta atual

Para ver as configurações atuais do almoço, execute:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

A string que representa o destino tem o seguinte formato:

lunch product_name-release-build_variant

Os componentes desta string são:

  • O product_name é o nome do produto que você deseja construir, como aosp_cf_x86_64_phone ou aosp_husky . Seu product_name específico pode seguir seu próprio formato para seu dispositivo, mas o formato que o Google usa para seus dispositivos possui estes componentes:

    • aosp refere-se à plataforma de código aberto Android.
    • (opcional) cf é incluído quando o alvo se destina a ser executado no emulador Cuttlefish.
    • Arquitetura e hardware (codinome), como x86_64_phone ou husky que é o codinome do Pixel 8 pro. Para obter uma lista de codinomes para dispositivos Google, consulte Codinomes de dispositivos .
  • A release está definida como trunk_staging .

  • A parte build_variant da string pode ser um dos três valores na tabela a seguir:

    build_variant Descrição
    user Esta variante de construção fornece acesso de segurança limitado e é adequada para produção.
    userdebug Esta variante de compilação ajuda os desenvolvedores de dispositivos a compreender o desempenho e o poder das versões em desenvolvimento. Ao desenvolver com uma compilação userdebug , siga as Diretrizes para userdebug .
    inglês Esta variante de construção tem um tempo de construção mais rápido e é mais adequada para o desenvolvimento diário se você não se preocupa com desempenho e potência.

Se você lunch sem argumentos, será fornecida uma lista de alvos comuns. Você também pode criar suas próprias strings de destino reunindo os elementos da string de destino usando as informações desta página e os codinomes que representam hardware específico do Google em Codinomes de dispositivos .

Construa o código

Execute o seguinte comando para construir seu destino. Dependendo da especificação da sua estação de trabalho, a primeira construção pode levar menos de uma hora e até algumas horas. As compilações subsequentes levam significativamente menos tempo.

$ m

A primeira saída que você deve ver é uma sinopse do seu ambiente de destino e de construção:

============================================
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 saída da sua compilação aparece em ` $OUT_DIR . Se você construir destinos diferentes, cada construção de destino aparecerá em $OUT_DIR .

O comando m é compilado a partir do topo da árvore, para que você possa executar m dentro de subdiretórios. Se você tiver a variável de ambiente TOP definida, o comando m a utilizará. Se TOP não estiver definido, o comando m procura a árvore no diretório atual, tentando encontrar o topo da árvore.

O comando m pode lidar com tarefas paralelas com um argumento -jN . Se você não fornecer um argumento -j , o sistema de compilação selecionará automaticamente uma contagem de tarefas paralelas que considera ideal para o seu sistema.

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

Solucionar erros de compilação (8.0 ou anterior)

Se você estiver compilando o AOSP 8 ou anterior, m poderá ser abortado quando encontrar um problema com sua versão do Java. Por exemplo, você pode 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
************************************************************

Aqui estão as prováveis ​​causas e soluções:

  • Você não conseguiu instalar o JDK correto conforme especificado nas seções JDK de Configuração para desenvolvimento AOSP (2.3 - 8.0) .
  • Há outro JDK instalado anteriormente aparecendo no seu caminho. Anexe o JDK correto ao início do seu caminho ou remova o JDK problemático.