O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Como estabelecer um ambiente de compilaçã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 uma ramificação

Alguns requisitos para o ambiente de compilaçã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 compilação 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)

Você precisará 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

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

Como configurar um ambiente de compilaçã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 a ramificação master em um ambiente moderno do macOS. Ramificações 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 250 GB é o mínimo para concluir o build. Quanto mais espaço houver, melhor será para 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 a partir de um shell com o seguinte comando:

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

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

Se, posteriormente, você precisar 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.sparseimage armazenada no seu diretório inicial, adicione as funções auxiliares a ~/.bash_profile:

  • Para montar a imagem ao executar mountAndroid:
    # mount the android file image
    mountAndroid() { hdiutil attach ~/android.dmg.sparseimage -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 compilação altamente paralelo pode exceder a 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 compilação está pronto. Prossiga para Como fazer o download da origem.