Baixando a fonte

A árvore de origem do Android está localizada em um repositório Git hospedado pelo Google. O repositório Git inclui metadados para a origem do Android, incluindo alterações na origem e quando as alterações foram feitas. Esta página descreve como baixar a árvore de origem para uma linha de código Android específica.

Para começar com uma imagem de fábrica para um dispositivo específico em vez de baixar a fonte, consulte Selecionando uma compilação de dispositivo .

Inicializando um cliente Repo

Após instalar o Repo Launcher , configure seu cliente para acessar o repositório de origem do Android:

  1. Crie um diretório vazio para armazenar seus arquivos de trabalho. Dê o nome que quiser:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Configure o Git com seu nome real e endereço de e-mail. Para usar a ferramenta de revisão de código Gerrit, você precisa de um endereço de e-mail conectado a uma conta do Google registrada . Certifique-se de que este seja um endereço ativo onde você possa receber mensagens. O nome que você fornece aqui aparece nas atribuições para seus envios de código.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Execute o repo init para obter a versão mais recente do Repo com as correções de bugs mais recentes. Você deve especificar uma URL para o manifesto, que especifica onde os vários repositórios incluídos na origem do Android são colocados em seu diretório de trabalho.

    repo init -u https://android.googlesource.com/platform/manifest
    

    Para verificar o branch master:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    Para fazer check-out de uma ramificação que não seja master , especifique-a com -b . Para obter uma lista de ramificações, consulte tags e compilações do código-fonte .

    Para Python 2

    Para Python 3

    Se você receber uma mensagem de erro " /usr/bin/env 'python' no such file or directory ", use uma das seguintes soluções:

    Se o seu Ubuntu 20.04.2 LTS for uma versão Linux recém-instalada (vs. atualizada):

    sudo ln -s /usr/bin/python3 /usr/bin/python

    Se estiver usando o Git versão 2.19 ou superior, você pode especificar --partial-clone ao executar o repo init . Isso faz uso do recurso de clone parcial do Git para baixar apenas objetos Git quando necessário, em vez de baixar tudo. Como usar clones parciais significa que muitas operações devem se comunicar com o servidor, use o seguinte se você for um desenvolvedor e estiver usando uma rede com baixa latência:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    Somente para sistema operacional Windows: se você receber uma mensagem de erro informando que não foi possível criar links simbólicos, causando falha na repo init do repositório, consulte a documentação de links simbólicos do GitHub para criá-los ou para habilitar seu suporte. Para não administradores, consulte a seção Permitindo que não administradores criem links simbólicos .

Uma inicialização bem-sucedida termina com uma mensagem informando que o Repo foi inicializado em seu diretório de trabalho. Seu diretório de cliente agora contém um diretório .repo onde arquivos como o manifesto são mantidos.

Baixando a árvore de origem do Android

Para baixar a árvore de origem do Android para seu diretório de trabalho dos repositórios conforme especificado no manifesto padrão, execute:

repo sync

Para acelerar as sincronizações, passe os sinalizadores -c (ramificação atual) e -j threadcount de contagem de encadeamentos:

repo sync -c -j8

Os arquivos de origem do Android são baixados em seu diretório de trabalho sob seus nomes de projeto.

Para suprimir a saída, passe o sinalizador -q (silencioso). Consulte a Referência de Comandos do Repo para todas as opções.

Usando autenticação

Por padrão, o acesso ao código-fonte do Android é anônimo. Para proteger os servidores contra uso excessivo, cada endereço IP é associado a uma cota.

Ao compartilhar um endereço IP com outros usuários (por exemplo, ao acessar os repositórios de origem além de um firewall NAT), as cotas podem ser acionadas mesmo para padrões de uso regular (por exemplo, se muitos usuários sincronizarem novos clientes do mesmo endereço IP em um período curto).

Nesse caso, você pode usar o acesso autenticado, que usa uma cota separada para cada usuário, independentemente do endereço IP.

Primeiro, crie uma senha com o gerador de senhas e siga as instruções na página do gerador de senhas.

Em seguida, force o acesso autenticado usando o URI do manifesto https://android.googlesource.com/a/platform/manifest . Observe como o prefixo do diretório /a/ aciona a autenticação obrigatória. Você pode converter um cliente existente para usar a autenticação obrigatória com o seguinte comando:

repo init -u https://android.googlesource.com/a/platform/manifest

Solução de problemas de rede

Ao baixar por trás de um proxy (o que é comum em alguns ambientes corporativos), talvez seja necessário especificar explicitamente o proxy a ser usado pelo Repo:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Mais raramente, os clientes Linux apresentam problemas de conectividade, ficando presos no meio de downloads (normalmente durante o recebimento de objetos ). Ajustar as configurações da pilha TCP/IP e usar comandos não paralelos pode melhorar a situação. Você deve ter acesso root para modificar a configuração TCP:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

Usando um espelho local

Ao usar vários clientes, especialmente em situações em que a largura de banda é escassa, é melhor criar um espelho local de todo o conteúdo do servidor e sincronizar clientes desse espelho (o que não requer acesso à rede). O download de um espelho completo é menor que o download de dois clientes e contém mais informações.

Essas instruções assumem que o espelho é criado em /usr/local/aosp/mirror . Primeiro, crie e sincronize o próprio espelho. Observe o sinalizador --mirror , que você pode especificar apenas ao criar um novo cliente:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

Quando o espelho é sincronizado, você pode criar novos clientes a partir dele. Observe que você deve especificar um caminho absoluto:

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

Por fim, para sincronizar um cliente com o servidor, sincronize o espelho com o servidor e, em seguida, o cliente com o espelho:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

É possível armazenar o espelho em um servidor LAN e acessá-lo por NFS, SSH ou Git. Também é possível armazená-lo em uma unidade removível e passá-la entre usuários ou máquinas.

Verificando tags do Git

Carregue a seguinte chave pública em seu banco de dados de chaves do GnuPG. A chave é usada para assinar tags anotadas que representam lançamentos.

gpg --import

Copie e cole a chave abaixo e digite EOF ( Ctrl-D ) para finalizar a entrada e processar as chaves.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Depois de importar as chaves, você pode verificar qualquer tag com:

git tag -v TAG_NAME

Obter binários proprietários

O AOSP não pode ser usado apenas a partir de código-fonte puro e requer bibliotecas proprietárias adicionais relacionadas a hardware para serem executadas, como para aceleração de gráficos de hardware. Consulte as seções abaixo para obter links de download e binários de dispositivos para obter recursos adicionais.

Baixe binários proprietários

Você pode fazer download de binários oficiais para os dispositivos compatíveis que executam ramificações de versão AOSP marcadas dos drivers do Google . Esses binários adicionam acesso a recursos de hardware adicionais com código-fonte não aberto. Para criar a ramificação mestre AOSP, use a Visualização de binários . Ao construir o branch master para um dispositivo, use os binários para a versão numerada mais recente ou com a data mais recente.

Extraia binários proprietários

Cada conjunto de binários vem como um script de extração automática em um arquivo compactado. Descompacte cada arquivo, execute o script de extração automática incluído na raiz da árvore de origem e confirme que você concorda com os termos do contrato de licença incluído. Os binários e seus makefiles correspondentes são instalados no vendor/ hierarquia da árvore de origem.

Limpar

Para garantir que os binários recém-instalados sejam considerados adequadamente após a extração, exclua a saída existente de qualquer compilação anterior usando:

make clobber