O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Construindo o Android

Siga estas instruções para começar a criar 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 destinos de dispositivo e tapas para criar aplicativos desagregados, como o aplicativo de TV de referência .

Você precisa reemitir este comando após cada repo sync para selecionar quaisquer alterações nesse script. Observe que substituir source por . (um único ponto) economiza 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 alvo 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 um argumento. Por exemplo, o seguinte comando refere-se a uma compilação completa para o emulador, com toda a depuração habilitada:

lunch aosp_arm-eng

Se for executado sem argumentos, o 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 as configurações de compilação de todos os dispositivos suportados no AOSP ou converse com pessoas de sua equipe sobre o almoço correto para o dispositivo em que você está trabalhando.

Todos os destinos de compilação assumem o formato BUILD-BUILDTYPE , em que 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
userdebug Como usuário, mas com acesso root e capacidade de depuração; preferido para depuração
eng Configuração de desenvolvimento com ferramentas de depuração adicionais

A compilação userdebug deve se comportar da mesma forma que a compilação do usuário, com a capacidade de habilitar depuração adicional que normalmente viola o modelo de segurança da plataforma. Isso torna a compilação userdebug boa para testes de usuário com maiores recursos de diagnóstico. Ao desenvolver com a compilação userdebug, siga as diretrizes userdebug .

A compilação eng prioriza a produtividade de engenharia para engenheiros que trabalham na plataforma. A compilação eng desativa várias otimizações usadas para fornecer uma boa experiência do usuário. Caso contrário, a compilação eng tem um comportamento semelhante às compilações user e userdebug para que os desenvolvedores de dispositivos possam ver como o código se comporta nesses ambientes.

Para obter mais informações sobre como criar e executar em hardware real, consulte Dispositivos intermitentes .

tapas

O comando tapas configura a compilação de aplicativos desagregados. Ele seleciona aplicativos individuais a serem criados pelo sistema de compilação do Android. Ao contrário do lunch , o tapas não requer 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 esteja 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 criar módulos específicos em vez da imagem completa do dispositivo listando seus nomes na sua linha de comando m . Além disso, m fornece alguns pseudoalvos para fins especiais. Alguns exemplos são:

  • droid - m droid é a compilação normal. Este destino está aqui porque o destino padrão requer um nome.
  • all - m all constrói tudo o que m droid faz, além de tudo que não tem a tag droid . O servidor de compilação executa isso para garantir que tudo o que está na árvore e tenha um arquivo Android.mk compilado.
  • m - Executa construções do topo da árvore. Isso é útil porque você pode executar make de dentro de subdiretórios. Se você tiver a variável de ambiente TOP definida, ela será usada. Caso contrário, ele procurará a árvore no diretório atual, tentando encontrar o topo da árvore. Você pode construir toda a árvore de código-fonte executando m 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 m clean exclui todos os arquivos de saída e intermediários para esta configuração. Isso é o mesmo que rm -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 compilação com lunch , é improvável que 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 em seu caminho após uma compilação bem-sucedida. Consulte Como atualizar um dispositivo para obter instruções.

Emulando um dispositivo Android

O emulador é adicionado ao seu caminho automaticamente pelo processo de compilação. Para executar o emulador, digite:

emulator

Noções básicas sobre impressões digitais de construção

Para rastrear e relatar problemas vinculados a uma compilação específica do Android, é importante entender a impressão digital da compilação. A impressão digital da construção é uma string exclusiva legível por humanos contendo informações do fabricante emitidas para cada construção. Consulte a descrição FINGERPRINT na seção Build Parameters do Android Compatibility Definition Document (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 de firmware específicas. 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 nativo, bem como comportamentos de API suaves
  • API principal e alguns comportamentos da IU do sistema
  • Requisitos de compatibilidade e segurança definidos no CDD
  • Especificações do produto e a configuração de uso de recursos empregada por aplicativos para dispositivos de destino 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 problemas de erros de compilação comuns

Versão errada do Java

Se você está tentando construir uma versão do Android 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:

Sem permissão USB

Por padrão, na maioria dos sistemas Linux, usuários sem privilégios não podem acessar as portas USB. Se você vir um erro de permissão negada, siga as instruções em Configurando o acesso USB .

Se o ADB já estiver em execução e não puder se conectar ao dispositivo depois de configurar essas regras, você poderá eliminá-lo com adb kill-server . Esse comando faz com que o ADB seja reiniciado com a nova configuração.