Siga estas instruções para começar a construir o Android.
Configurando o ambiente
Inicialize o ambiente com o script envsetup.sh
:
source build/envsetup.sh
ou
. build/envsetup.sh
Consulte o script em platform/build/envsetup.sh para obter descrições de comandos relacionados, incluindo almoço para selecionar alvos de dispositivos e tapas para criar aplicativos desagregados, como o aplicativo de TV de referência .
Você precisa emitir novamente este comando após cada repo sync
para captar quaisquer alterações nesse script. Observe que substituir source
por .
(um único ponto) salva alguns caracteres, e a forma abreviada é mais comumente usada na documentação.
O script envsetup.sh
importa vários comandos que permitem trabalhar com o código-fonte do Android, incluindo os comandos usados neste exercício.
Para ver a lista completa de comandos disponíveis, execute:
hmm
Escolhendo um alvo
almoço
Escolha qual meta construir com lunch
. lunch product_name - build_variant
seleciona product_name como o produto a ser construído e build_variant como a variante a ser construída e armazena essas seleções no ambiente para serem lidas por invocações subsequentes de m
e outros comandos semelhantes.
A configuração exata pode ser passada como argumento. Por exemplo, o comando a seguir refere-se a uma compilação completa do emulador, com toda a depuração habilitada:
lunch aosp_arm-eng
Se for executado sem argumentos, lunch
solicitará que você escolha um alvo no menu, mas observe que o menu não inclui todas as possibilidades. Consulte Selecionando uma compilação de dispositivo para obter as configurações de compilação de todos os dispositivos com suporte no AOSP ou converse com pessoas da sua equipe sobre o almoço correto para o dispositivo em que você está trabalhando.
Todos os destinos de construção assumem o formato BUILD-BUILDTYPE
, onde BUILD
é um codinome referente à combinação de recursos específica. BUILDTYPE
é um dos seguintes.
Tipo de construção | Usar |
---|---|
do utilizador | Acesso limitado; adequado para produção |
depuração do usuário | Como usuário, mas com acesso root e capacidade de depuração; muito próximo do desempenho da produção |
inglês | Configuração de desenvolvimento com tempo de construção mais rápido; mais adequado para o desenvolvimento diário |
A compilação userdebug
deve se comportar da mesma forma que a compilação user
, com a capacidade de habilitar depuração adicional que normalmente viola o modelo de segurança da plataforma. Isso torna a construção userdebug
boa para entender o desempenho e a potência usada pelo lançamento. Ao desenvolver com a compilação userdebug
, siga as diretrizes do userdebug .
A construção eng
prioriza a produtividade da engenharia para engenheiros que trabalham na plataforma. A compilação eng
desativa várias otimizações usadas para maximizar o desempenho do tempo de execução. Caso contrário, a compilação eng
é muito semelhante às compilações user
e userdebug
para que os desenvolvedores de dispositivos possam ver como o código se comporta nesses ambientes.
Para ver as configurações atuais do almoço, execute o comando:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Para obter mais informações sobre como criar e executar em hardware real, consulte Dispositivos Flashing .
tapas
O comando tapas
configura a construção de aplicativos desagregados. Ele seleciona aplicativos individuais a serem desenvolvidos pelo sistema de compilação do Android. Diferentemente lunch
, tapas
não solicita a construção de imagens para um dispositivo.
Execute tapas help
para obter mais informações sobre o comando.
Construindo o código
Esta seção é um resumo rápido para garantir que a configuração seja concluída.
Construa tudo com m
. 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.
m
Conforme explicado acima, você pode construir módulos específicos em vez da imagem completa do dispositivo listando seus nomes na linha de comando m
. Além disso, m
fornece alguns pseudo-alvos para fins especiais. Alguns exemplos são:
-
droid
-m droid
é a construção normal. Este destino está aqui porque o destino padrão requer um nome. -
all
-m all
constrói tudo o quem droid
faz, além de tudo que não possui a tagdroid
. O servidor de compilação executa isso para garantir que tudo o que está na árvore e possui um arquivoAndroid.mk
seja compilado. -
m
- Executa construções do topo da árvore. Isso é útil porque você pode executarmake
dentro de subdiretórios. Se você tiver a variável de ambienteTOP
definida, ela será usada. Caso contrário, ele procura a árvore no diretório atual, tentando encontrar o topo da árvore. Você pode construir toda a árvore do código-fonte executandom
sem argumentos ou construir alvos específicos especificando seus nomes. -
mma
– Constrói todos os módulos no diretório atual e suas dependências. -
mmma
– Constrói todos os módulos nos diretórios fornecidos e suas dependências. -
croot
-cd
para o topo da árvore. -
clean
-m clean
exclui todos os arquivos de saída e intermediários desta configuração. É o mesmo querm -rf out/
.
Execute m help
para ver o que outros pseudotargets m
fornecem.
Executando a compilação
Você pode executar sua compilação em um emulador ou atualizá-la em um dispositivo. Como você já selecionou seu destino de construção com lunch
, é improvável que ele seja executado em um destino diferente daquele para o qual foi criado.
Piscando com fastboot
Para atualizar um dispositivo, use fastboot
, que deve ser incluído no seu caminho após uma compilação bem-sucedida. Consulte Atualizar um dispositivo para obter instruções.
Emulando um dispositivo Android
O emulador é adicionado ao seu caminho automaticamente pelo processo de construção. Para executar o emulador, digite:
emulator
Compreendendo as impressões digitais de construção
Para rastrear e relatar problemas vinculados a uma versão específica do Android, é importante compreender a impressão digital da versão. A impressão digital da compilação é uma string exclusiva e legível que contém informações do fabricante emitidas para cada compilação. Consulte a descrição do FINGERPRINT na seção Parâmetros de compilação do Documento de definição de compatibilidade do Android (CDD) para obter a sintaxe precisa.
A impressão digital de compilação representa uma implementação e revisão específica do Android. Essa chave exclusiva permite que desenvolvedores de aplicativos e outros relatem problemas com versões específicas de firmware. Consulte Relatando bugs para o processo de relatório de problemas do Android.
Uma impressão digital de compilação encapsula todos os detalhes de implementação do Android:
- APIs: Android e nativas, bem como comportamentos de APIs flexíveis
- API principal e algum comportamento da interface do sistema
- Requisitos de compatibilidade e segurança definidos no CDD
- Especificações do produto e a configuração de recursos de uso empregada por aplicativos para dispositivos direcionados que atendem aos requisitos esperados
- Implementações de componentes de hardware e software
Consulte o CDD para obter detalhes completos e Adicionar um novo dispositivo para obter instruções sobre como criar um dispositivo Android totalmente novo.
Solução de erros comuns de build
Versão Java errada
Se você estiver tentando criar uma versão do Android que seja inconsistente com sua versão do Java, make
com uma mensagem como:
************************************************************ 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:
- Falha ao instalar o JDK correto conforme especificado nos requisitos do JDK . Certifique-se de ter seguido as etapas em Configurando o ambiente e Escolhendo um destino .
- Outro JDK previamente instalado aparecendo no seu caminho. Anexe o JDK correto ao início do seu caminho ou remova o JDK problemático.
Sem permissão USB
Por padrão, na maioria dos sistemas Linux, usuários sem privilégios não podem acessar portas USB. Se você vir um erro de permissão negada, siga as instruções em Configurando o acesso USB .
Se o ADB já estava em execução e não consegue se conectar ao dispositivo depois de configurar essas regras, você pode eliminá-lo com adb kill-server
. Esse comando faz com que o ADB seja reiniciado com a nova configuração.