Como estabelecer um ambiente de build

Esta seção descreve como configurar seu ambiente de trabalho local para criar os arquivos de origem do Android. Você precisa usar o Linux, porque não é possível realizar a criação no MacOS ou no Windows. Lembre-se também da mudança importante no binário /usr/bin/python.

Para ter uma ideia geral de todo o processo de revisão e atualização de código, consulte O ciclo de um patch.

Como escolher uma ramificação

Alguns requisitos para o ambiente de criação são determinados pela versão do código-fonte que você planeja compilar. Para ver uma lista completa das ramificações disponíveis, consulte Números de build. Você também pode optar por fazer o download e criar o código-fonte mais recente (chamado master). Nesse caso, basta omitir a especificação da ramificação ao inicializar o repositório.

Depois de selecionar uma ramificação, siga as instruções apropriadas abaixo para configurar seu ambiente de compilação.

Como configurar um ambiente de build do Linux

Estas instruções se aplicam a todas as ramificações, incluindo master.

A compilação do Android é testada internamente e com frequência no Ubuntu LTS (14.04) e nos testes do Debian. A maioria das outras distribuições precisa ter as ferramentas de compilação necessárias disponíveis.

Para o Gingerbread (2.3.x) e versões mais recentes, incluindo a ramificação master, é necessário ter um ambiente de 64 bits. Versões mais antigas podem ser compiladas em sistemas de 32 bits.

Como instalar os pacotes necessários (Ubuntu 18.04 e versões mais recentes)

Você precisa de uma versão de 64 bits do Ubuntu.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Como instalar os pacotes necessários (Ubuntu 14.04)

Você precisa de uma versão de 64 bits do Ubuntu (a 14.04 é recomendada).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Como instalar os pacotes necessários (Ubuntu 12.04)

Você pode usar o Ubuntu 12.04 para criar versões mais antigas do Android. A versão 12.04 não é compatível com as versões recentes ou master.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Como instalar os pacotes necessários (Ubuntu 10.04-11.10)

A criação no Ubuntu 10.04 a 11.10 não é mais compatível, mas pode ser útil para criar versões mais antigas do AOSP.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc

No Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

No Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Como configurar o acesso por USB

Instale um conjunto padrão de regras udev mantido pela comunidade para todos os dispositivos Android seguindo as instruções para Configurar um dispositivo para desenvolvimento.

Como usar um diretório de saída separado

Por padrão, a saída de cada build é armazenada no subdiretório out/ da árvore de origem correspondente. É possível mudar isso exportando a variável de ambiente OUT_DIR. Por exemplo:

export OUT_DIR=out_mytarget

Isso fará com que a saída da build seja armazenada no subdiretório out_mytarget/ da árvore de origem. Ao usar a mesma árvore de origem na criação para vários destinos, é recomendável usar um OUT_DIR separado para cada um deles.

Em alguns computadores com vários dispositivos de armazenamento, os builds são mais rápidos ao armazenar os arquivos de origem e a saída em volumes separados. Para ter melhor desempenho, a saída pode ser armazenada em um sistema de arquivos otimizado para velocidade em vez de resistência contra falhas, porque todos os arquivos podem ser gerados novamente caso o sistema de arquivos seja corrompido.

Para configurar isso, exporte a variável OUT_DIR_COMMON_BASE para apontar para o local onde os diretórios de saída serão armazenados.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

O diretório de saída para cada árvore de origem separada é nomeado de acordo com o diretório que contém a árvore de origem. Por exemplo, se você tiver árvores de origem /source/master1 e /source/master2, e se OUT_DIR_COMMON_BASE estiver definido como /output, os diretórios de saída serão /output/master1 e /output/master2.

Evite ter várias árvores de origem armazenadas em diretórios com o mesmo nome, porque elas acabariam compartilhando um diretório de saída, com resultados imprevisíveis. Isso só é compatível com Jelly Bean (4.1) e versões mais recentes, incluindo a ramificação master.

Fazer o download da origem

Seu ambiente de criação está pronto. Prossiga para Como fazer o download da origem.