Estabelecendo um ambiente de construção

Esta seção descreve como configurar seu ambiente de trabalho local para criar os arquivos de origem do Android. Você deve usar Linux; a construção em MacOS ou Windows não é suportada. Lembre-se também da importante mudança no binário /usr/bin/python .

Para obter uma visão geral de todo o processo de revisão de código e atualização de código, consulte Life of a Patch .

Escolhendo um ramo

Alguns requisitos para o ambiente de compilação são determinados pela versão do código-fonte que você planeja compilar. Para obter uma lista completa de ramificações disponíveis, consulte Números de compilação . Você também pode optar por baixar e compilar o código-fonte mais recente (chamado master ), nesse caso você simplesmente omite a especificação do branch ao inicializar o repositório.

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

Configurando um ambiente de compilação do Linux

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

A compilação do Android é rotineiramente testada internamente no Ubuntu LTS (14.04) e no teste Debian. A maioria das outras distribuições deve ter as ferramentas de compilação necessárias disponíveis.

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

Instalando os pacotes necessários (Ubuntu 18.04)

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 gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Instalando os pacotes necessários (Ubuntu 14.04)

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

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

Instalando os pacotes necessários (Ubuntu 12.04)

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

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 g++-multilib 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

Instalando os pacotes necessários (Ubuntu 10.04-11.10)

A compilação no Ubuntu 10.04-11.10 não é mais suportada, mas pode ser útil para compilar 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 g++-multilib 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

Configurando o acesso USB

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

Usando um diretório de saída separado

Por padrão, a saída de cada compilação é armazenada no subdiretório out/ da árvore de origem correspondente. Você pode substituir isso exportando a variável de ambiente OUT_DIR . Por exemplo:

export OUT_DIR=out_mytarget

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

Em algumas máquinas com vários dispositivos de armazenamento, as compilações são mais rápidas ao armazenar os arquivos de origem e a saída em volumes separados. Para desempenho adicional, a saída pode ser armazenada em um sistema de arquivos otimizado para velocidade em vez de robustez contra falhas, porque todos os arquivos podem ser regenerados se o sistema de arquivos estiver corrompido.

Para configurar isso, exporte a variável OUT_DIR_COMMON_BASE para apontar para o local onde seus 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 tem o nome do diretório que contém a árvore de origem. Por exemplo, se você tiver árvores /source/master1 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, pois as árvores de origem acabariam compartilhando um diretório de saída, com resultados imprevisíveis. Isso é suportado apenas no Jelly Bean (4.1) e superior, incluindo o branch master .

Próximo: Baixe a fonte

Seu ambiente de construção está pronto! Prossiga para baixar a fonte .