Siga estas instruções para começar a criar para Android.
Como configurar o ambiente
Inicialize o ambiente com o script envsetup.sh
:
source build/envsetup.sh
ou
. build/envsetup.sh
Veja descrições de comandos relacionados no script em platform/build/envsetup.sh, incluindo lunch para escolher os dispositivos de destino e tapas para criar novos apps desagrupados, como o app de TV de referência.
É necessário reemitir esse comando após cada repo sync
para detectar
as mudanças nesse script. Observe que a substituição de source
por .
(um único
ponto) economiza alguns caracteres, e o formato curto é mais comumente usado 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 dos comandos disponíveis, execute:
hmm
Como escolher um destino
lunch
Escolha qual destino criar com o lunch
. lunch
product_name-build_variant
seleciona
product_name como o produto a ser criado e build_variant
como a variante a ser criada, e armazena essas seleções no ambiente que será
lido por invocações subsequentes de m
e outros comandos parecidos.
A configuração exata pode ser passada como um argumento. Por exemplo, o comando abaixo se refere a um build completo para o emulador, com toda a depuração ativada:
lunch aosp_arm-eng
Se executado sem argumentos, lunch
vai solicitar que você escolha um
destino no menu, mas o menu não inclui todas as possibilidades.
Consulte Como selecionar
um build do dispositivo para ver as configurações de build de todos os dispositivos com suporte do AOSP
ou fale com a equipe sobre o lunch correto para o dispositivo em que você
está trabalhando.
Todos os destinos de build assumem o formato BUILD-BUILDTYPE
, em que
BUILD
é um codinome referente à combinação específica
de recursos. BUILDTYPE
é uma das opções a seguir.
Tipo de build | Uso |
---|---|
user | Acesso limitado; adequado para produção |
userdebug | Como o user, mas com acesso root e capacidade de depuração; mais indicado para depuração |
eng | Configuração de desenvolvimento com outras ferramentas de depuração |
O build userdebug precisa se comportar da mesma forma que a user, com a capacidade de ativar depuração adicional, que normalmente viola o modelo de segurança da plataforma. Isso faz com que userdebug seja um bom build para testes de usuários com maiores recursos de diagnóstico. Ao desenvolver com o build userdebug, siga as diretrizes do userdebug.
O build eng prioriza a produtividade de engenharia para engenheiros que trabalham na plataforma. Ele desativa várias otimizações usadas para fornecer uma boa experiência ao usuário. Fora isso, o build eng apresenta um comportamento semelhante ao dos builds user e userdebug, para que os desenvolvedores de dispositivos possam ver como o código se comporta nesses ambientes.
Para ver mais informações sobre como criar e executar em hardwares reais, consulte Como atualizar dispositivos.
tapas
O comando tapas
configura o build de apps desagrupados. Ele seleciona apps individuais
para serem criados pelo sistema de compilação do Android. Ao contrário de lunch
, tapas
não
solicita a criação de imagens para um dispositivo.
Execute tapas help
para ver mais informações sobre o comando.
Como compilar o código
Esta seção é um breve resumo para garantir que a configuração esteja concluída.
Compile tudo com m
. m
pode manipular 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 julgar
ser ideal para seu sistema.
m
Como explicado acima, você pode compilar 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, m
oferece alguns pseudodestinos para fins especiais. Alguns
exemplos:
droid
:m droid
é o build normal. Esse destino está aqui porque o destino padrão requer um nome.all
:m all
compila tudo o quem droid
faz, além de tudo que não tem a tagdroid
. O servidor de compilação o executa para garantir que tudo que está na árvore e tem um arquivoAndroid.mk
seja compilado.m
: executa builds do topo da árvore. Isso é útil porque você pode executar omake
dentro de subdiretórios. Se você tiver a variável de ambienteTOP
definida, ela será usada. Se você não tiver, o comando buscará a árvore no diretório atual para encontrar o topo dela. Você pode compilar toda a árvore de código-fonte executandom
sem argumentos ou compilar destinos específicos definindo os nomes deles.mma
: compila todos os módulos no diretório atual e nas dependências.mmma
: compila todos os módulos nos diretórios fornecidos e as respectivas dependências.croot
:cd
para o topo da árvore.clean
:m clean
exclui todos os arquivos de saída e intermediários para esta configuração. Ele é o mesmo querm -rf out/
.
Execute m help
para ver o que outros pseudodestinos m
oferecem.
Como executar o build
Você pode executar seu build em um emulador ou atualizá-lo em um dispositivo.
Como você já selecionou o destino de build com lunch
,
é improvável que ele seja executado em um destino diferente daquele para o qual foi criado.
Como realizar uma atualização com fastboot
Para realizar a atualização de um dispositivo, use fastboot
, que precisa
ser incluído no seu caminho após o build ser concluído. Consulte Como realizar uma atualização em um dispositivo para
ver mais instruções.
Como emular um dispositivo Android
O emulador é adicionado ao seu caminho automaticamente pelo processo de criação. Para executá-lo, digite:
emulator
Como entender as impressões digitais do build
Para monitorar e denunciar problemas vinculados a um build específico do Android, é importante entender a impressão digital do build. Ele é uma string única e legível contendo informações do fabricante emitidas para cada build. Consulte a descrição de FINGERPRINT na seção Parâmetros de build do Documento de definição de compatibilidade (CDD) do Android para ver a sintaxe exata.
A impressão digital do build representa uma implementação e revisão específicas do Android. Essa chave exclusiva permite que desenvolvedores de apps e outras pessoas informem problemas com versões específicas do firmware. Consulte Como informar bugs para ver o processo de geração de relatórios de problemas no Android.
Uma impressão digital do build inclui todos os detalhes de implementação do Android:
- APIs: do Android e nativas, além de comportamentos leves de API
- 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 uses-feature empregadas por apps para dispositivos de destino que atendem aos requisitos esperados
- Implementações de componentes de hardware e software
Consulte o CDD para ver detalhes completos e o artigo Como adicionar um novo dispositivo para ver instruções sobre como criar um dispositivo Android totalmente novo.
Como solucionar erros de build comuns
Versão incorreta do Java
Caso você esteja tentando criar uma versão do Android que seja inconsistente com
sua versão do Java, make
cancelará a tentativa 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 ************************************************************
Estas são as prováveis causas e soluções:
- Falha ao instalar o JDK correto conforme especificado nos requisitos do JDK. É necessário seguir as etapas apresentadas em Como configurar o ambiente e Como escolher um destino.
- Outro JDK instalado anteriormente aparece no seu caminho. Inclua o JDK correto no início do seu caminho ou remova o JDK problemático.
Sem permissão para USB
Na maioria dos sistemas Linux, por padrão, os usuários sem privilégios não podem acessar as portas USB. Se você encontrar um erro de permissão negada, siga as instruções em Como configurar o acesso por USB.
Se o adb já estava em execução e não consegue se conectar ao dispositivo
após a configuração dessas regras, você pode eliminá-lo com adb kill-server
.
Esse comando faz com que o adb seja reiniciado com a nova configuração.