estabelecer um ambiente de Compilação
Esta secção descreve como configurar o seu ambiente de trabalho local para criar os ficheiros Android source. Você deve usar o Linux ou macOS; a compilação Sob O Windows não é suportada de momento.
para uma visão geral de todo o processo de revisão de código e atualização de código, veja a vida de um Patch.
escolher um ramo
alguns requisitos para o ambiente de compilação são determinados pela versão do código-fonte que pretende compilar. Para uma lista completa dos ramos disponíveis, veja números de Compilação. Você também pode optar por baixar e criar o último código fonte (chamado master
), caso em que simplesmente omite a especificação do ramo quando inicializa o repositório.
Depois de seleccionar um ramo, siga as instruções apropriadas abaixo para configurar o seu ambiente de construção.
Configurando um buildenvironment Linux
estas instruções aplicam-se a todos os ramos, incluindo master
.
a compilação Android é rotineiramente testada em casa em Ubuntu LTS (14.04) e Debian testing. A maioria das outras distribuições devem ter as ferramentas de compilação necessárias disponíveis.para Pão de gengibre (2, 3.x) e versões mais elevadas, incluindo omaster
branch, um ambiente de 64 bits é necessário. Versões mais antigas podem ser compiladas em sistemas de 32 bits.
instalar 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 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
a Instalação de 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 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
instalação de pacotes necessários (Ubuntu 12.04)
você pode usar Ubuntu 12.04 para construir versões mais antigas do Android. Version 12.04 isn’t supported on master
or recent releases.
instalar pacotes necessários (Ubuntu 10.04-11.10)
construir no Ubuntu 10.04-11.10 já não é suportado, mas pode ser útil para a construção de 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
Configurar o acesso USB
Instalar uma comunidade mantida conjunto padrão de udev
regras para todos os dispositivos Android, seguindo as instruções para Configurar um dispositivo para o desenvolvimento.
usando um outputdirectory separado
por padrão, o resultado de cada compilação é armazenado na sub-pasta out/
da árvore fonte correspondente.
em algumas máquinas com múltiplos dispositivos de armazenamento, as compilações são mais rápidas ao armazenar os arquivos fonte e a saída em volumes separados. Para o desempenho adicional, a saída pode ser armazenada em um sistema de arquivos otimizado para a velocidade em vez de robustez de acidente, porque todos os arquivos podem ser regenerados se o sistema de arquivos estiver corrompido.
para configurar isto, exporta a variávelOUT_DIR_COMMON_BASE
para indicar a localização onde as suas pastas de saída serão armazenadas.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
a pasta de saída para cada árvore de origem separada tem o nome da pasta que mantém a árvore de origem. Por exemplo, se você tem árvores de código fonte /source/master1
e /source/master2
e se OUT_DIR_COMMON_BASE
está definido para /output
, a saída de diretórios /output/master1
e /output/master2
.
evite ter várias árvores de origem armazenadas em diretórios que têm o mesmo nome, como as árvores de origem acabaria compartilhando um diretório de saída, com resultados imprevisíveis. Isto só é suportado em Jelly Bean (4.1) e superior, incluindo o master
branch.
configurar um ambiente de compilação macOS
numa instalação predefinida, o macOS é executado num sistema de ficheiros que preserva o caso, mas não faz distinção entre maiúsculas e minúsculas. Este tipo de Sistema de arquivos não é suportado pelo Git e faz com que alguns comandos do Git (como git status
) se comportem anormalmente. Por causa disso, recomendamos que você sempre trabalhe com os arquivos fonte AOSP em um sistema de arquivos sensível a casos. Isto pode ser feito com bastante facilidade usando uma imagem de disco, discutido abaixo.
When the proper file system is available, building the master
branch in a modern macOS environment is straightforward. Ramos anteriores requerem algumas ferramentas adicionais e SDKs.
Criando um diskimage
pode criar um sistema de ficheiros com distinção de maiúsculas dentro do seu ambiente macOS existente, usando uma imagem de disco. Para criar a imagem, lançar Utilitário de disco e selecionar nova imagem. Um tamanho de 250 GB é o mínimo para completar a construção; mais espaço é o melhor para o crescimento futuro. O uso de imagens esparsas economiza espaço, permitindo o crescimento conforme necessário. Selecione case sensitive, journaled como o formato de volume.
Você também pode criar o sistema de arquivos a partir de uma shell com o seguinte comando:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
Isto cria um .dmg.sparseimage
de arquivos que, quando montado, atua como uma unidade e com a formatação para desenvolvimento Android.
Se você precisa de um maior volume, mais tarde, você pode redimensionar a imagem dispersa com o seguinte comando:
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
Para uma imagem de disco com o nome android.dmg.sparseimage
armazenado em seu diretório home, você pode adicionar funções de ajuda para ~/.bash_profile
:
- Para montar a imagem quando você executar
mountAndroid
# mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
- Para desmontá-lo quando você executar
umountAndroid
# unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }
Depois de montado o android
volume, você faz todo o seu trabalho lá. Você pode ejetá-lo (desmontá-lo) assim como faria uma unidade externa.
instalando Xcode e outros pacotes
- instale as ferramentas da linha de comandos do Xcode:
xcode-select --install
para versões mais antigas de macOS (10.8 ou inferior), você deve instalar Xcode a partir do site de desenvolvimento da Apple. Se você não está registrado como um desenvolvedor da Apple, você deve criar um ID da Apple para baixar.
- instale MacPorts ou Homebrew para a gestão de pacotes.
- Garantir que o diretório associado está no seu caminho dentro da
~/.bash_profile
arquivo:- MacPorts –
/opt/local/bin
deve aparecer antes de/usr/bin
export PATH=/opt/local/bin:$PATH
- Homebrew –
/usr/local/bin
export PATH=/usr/local/bin:$PATH
- MacPorts –
- Para MacPorts, problema:
POSIXLY_CORRECT=1 sudo port install git gnupg
- Para Homebrew, problema:
brew install git gnupg2
definindo um limite de descritores de ficheiros
em macOS, o limite por omissão do número de descritores de ficheiros abertos simultâneos é demasiado baixo e um processo de compilação altamente paralelo pode exceder este limite. Para aumentar a tampa, adicione as seguintes linhas ao seu ~/.bash_profile
:
# set the number of open files to be 1024ulimit -S -n 1024