Como estabelecer um ambiente de criação

Esta seção descreve como configurar seu ambiente de trabalho local para criar os arquivos de origem do Android. É preciso usar o Linux ou o macOS. No momento, não é possível realizar a criação no Windows.

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

Como escolher um branch

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 dos branches disponíveis, consulte Números de versão. 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 do branch ao inicializar o repositório.

Depois de selecionar um branch, siga as instruções apropriadas abaixo para configurar seu ambiente de criação.

Como configurar um ambiente de criação do Linux

Estas instruções se aplicam a todos os branches, incluindo o 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 criação necessárias disponíveis.

Para o Gingerbread (2.3.x) e versões posteriores, incluindo o branch 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 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 gcc-multilib g++-multilib libc6-dev-i386 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 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

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 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

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 versão é armazenada no subdiretório out/ da árvore de origem correspondente.

Em alguns computadores com vários dispositivos de armazenamento, as versões são mais rápidas 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 posteriores, incluindo o branch master.

Como configurar um ambiente de criação do macOS

Em uma instalação padrão, o macOS é executado em um sistema de arquivos que é indiferente a maiúsculas, mas que as preserva. Esse tipo de sistema de arquivos não é compatível com o Git e fará com que alguns comandos Git (como git status) se comportem de maneira anormal. Por isso, recomendamos que você sempre trabalhe com os arquivos de origem do AOSP em um sistema de arquivos com distinção entre maiúsculas e minúsculas. Isso pode ser feito com bastante facilidade, utilizando uma imagem de disco, conforme discutido abaixo.

Quando o sistema de arquivos adequado está disponível, é muito simples criar o branch master em um ambiente moderno do macOS. Branches anteriores exigem algumas outras ferramentas e SDKs.

Como criar uma imagem de disco com diferenciação entre maiúsculas e minúsculas

Você pode criar um sistema de arquivos com distinção entre maiúsculas e minúsculas no seu ambiente macOS atual usando uma imagem de disco. Para criar a imagem, abra o Utilitário de Disco e selecione Nova imagem. O tamanho de 25 GB é o mínimo para concluir a criação. Quanto mais espaço houver, melhor será o crescimento futuro. Usar imagens esparsas economiza espaço, permitindo um crescimento de acordo com a necessidade. Selecione Distinção de maiúsculas, Journaling como o formato de volume.

Você também pode criar o sistema de arquivos com o seguinte comando:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg

Isso criará um arquivo .dmg (ou possivelmente um arquivo .dmg.sparseimage) que, depois de montado, atuará como uma unidade com a formatação necessária para o desenvolvimento do Android.

Se você precisar posteriormente de um volume maior, poderá redimensionar a imagem esparsa com o seguinte comando:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

Para uma imagem de disco chamada android.dmg armazenada no seu diretório inicial, adicione as funções auxiliares a ~/.bash_profile:

  • Para ativar a imagem ao executar mountAndroid:
    # mount the android file image
    mountAndroid() { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
  • Para desconectá-la ao executar umountAndroid:
    # unmount the android file image
    umountAndroid() { hdiutil detach /Volumes/android; }

Depois de ativar o volume do android, você fará todo o seu trabalho lá. Será possível ejetá-lo (desconectá-lo) exatamente como você faria com um disco externo.

Como instalar o Xcode e outros pacotes

  1. Instale as ferramentas de linha de comando do Xcode:
    xcode-select --install
    Para versões mais antigas do macOS (10.8 ou anteriores), é necessário instalar o Xcode no site da Apple para desenvolvedores. Se você não está registrado como desenvolvedor da Apple, crie um ID Apple para fazer o download.
  2. Instale o MacPorts ou Homebrew (links em inglês) para gerenciar pacotes.
  3. Verifique se o diretório associado está no seu caminho dentro do arquivo ~/.bash_profile:
    1. MacPorts - /opt/local/bin precisa aparecer antes de /usr/bin:
      export PATH=/opt/local/bin:$PATH
    2. Homebrew - /usr/local/bin:
      export PATH=/usr/local/bin:$PATH
    3. Para MacPorts, emita:
      POSIXLY_CORRECT=1 sudo port install git gnupg
    4. Para Homebrew, emita:
      brew install git gnupg2

    Como definir um limite de descritor de arquivo

    No macOS, o limite padrão do número de descritores de arquivos simultâneos abertos é muito baixo, e um processo de criação altamente paralelo pode exceder esse limite. Para aumentar o limite, adicione as seguintes linhas ao seu ~/.bash_profile:

    # set the number of open files to be 1024
    ulimit -S -n 1024

    Fazer o download da origem

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