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 quem droid
faz, além de tudo que não tem a tagdroid
. O servidor de compilação executa isso para garantir que tudo o que está na árvore e tenha um arquivoAndroid.mk
compilado. -
m
- Executa construções do topo da árvore. Isso é útil porque você pode executarmake
de dentro de subdiretórios. Se você tiver a variável de ambienteTOP
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 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
-mm clean
exclui todos os arquivos de saída e intermediários para esta configuração. Isso é 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 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:
- 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 instalado anteriormente aparecendo em seu caminho. Anexe o JDK correto no início do 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 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.