Configurar para desenvolvimento em AOSP (9.0 ou mais recente)

Antes de fazer o download e criar a ramificação main da origem do Android, confira se o hardware atende aos requisitos e se o software necessário está instalado corretamente. Você também precisa conhecer estes termos:

Git
O Git é um sistema de controle de versões distribuído gratuito e de código aberto. O Android usa o Git para operações locais, como ramificações, commits, diferenças e edições. Para aprender a usar o Git, consulte a documentação relevante (em inglês).
Repo
Repo é um wrapper Python baseado no Git que simplifica a execução de operações complexas em vários repositórios Git. O Repo não substitui o Git para todas as operações de controle de versões, apenas facilita operações complexas do Git. Ele usa arquivos de manifesto para agregar projetos do Git no superprojeto do Android.
Arquivo de manifesto
Um arquivo de manifesto é um arquivo XML que especifica onde os vários projetos Git na origem do Android são posicionados na árvore de origem do AOSP.

Atender aos requisitos de hardware

Sua estação de trabalho de desenvolvimento precisa atender ou exceder estes requisitos de hardware:

  • Um sistema de 64 bits.

  • Pelo menos 400 GB de espaço livre em disco para verificar e criar o código (250 GB para verificar + 150 GB para criar).

  • Mínimo de 64 GB de RAM. O Google usa máquinas de 72 núcleos com 64 GB de RAM para criar para o Android. Com essa configuração de hardware, é necessário aproximadamente 40 minutos para um build completo do Android e apenas alguns minutos para um build incremental do Android. Por outro lado, leva aproximadamente 6 horas para um build completo com uma máquina de 6 núcleos com 64 GB de RAM.

Atender aos requisitos do sistema operacional

Sua estação de trabalho de desenvolvimento precisa executar uma distribuição de Linux de 64 bits com a biblioteca GNU C (glibc) 2.17 ou mais recente.

Instalar os pacotes necessários

Para criar para o Android 11 ou mais recente, você precisa usar o Ubuntu 18.04 ou mais recente. Para instalar os pacotes necessários para Ubuntu 18.04 ou mais recente, execute este comando:

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

Dentre os pacotes instalados, este comando instala o Git, que é utilizado para fazer o download da origem AOSP.

Instalar o software necessário

Antes de poder trabalhar com AOSP, você precisa instalar o OpenJDK, Make, Python 3 e Repo. A principal ramificação AOSP do Android vem com versões pré-criadas do OpenJDK, Make e Python 3. Etapas extra de instalação não são necessárias. A seção abaixo explica como instalar o Repo.

Instalar o Repo

Siga estas etapas para instalar o Repo:

  1. Faça o download das informações do pacote atual:

    sudo apt-get update
    
  2. Execute o comando abaixo para instalar o inicializador do Repo:

    sudo apt-get install repo
    

    O inicializador do Repo fornece um script Python que faz uma verificação e o download da ferramenta completa do Repo.

    Se for bem-sucedido, pule para a etapa 4.

  3. (opcional) Instale manualmente o Repo usando estes comandos:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo
    

    Os três primeiros comandos configuram um arquivo temporário, fazem o download do Repo para o arquivo e verificam se a chave fornecida corresponde à chave necessária. Se os comandos tiverem sucesso, o comando final vai instalar o inicializador do Repo.

  4. Confira a versão do inicializador do Repo:

    repo version
    

    A saída precisa indicar a versão 2.5 ou mais recente, por exemplo:

    repo launcher version 2.40

Definir um diretório de saída alternativo

Por padrão, a saída de cada build é armazenada no subdiretório out/ da árvore de origem correspondente. É possível mudar esse diretório exportando a variável de ambiente OUT_DIR. Por exemplo, se você quiser armazenar a saída em uma unidade diferente, aponte OUT_DIR para essa unidade:

export OUT_DIR=my_other_drive

Qual é a próxima etapa?