Baixe a fonte do Android

A fonte do Android está localizada em uma coleção de repositórios Git hospedados pelo Google. O repositório Git inclui todo o histórico da fonte do Android, incluindo alterações na fonte e quando as alterações foram feitas. Esta página descreve como baixar a fonte.

Inicialize o cliente Repo

Configure seu cliente para acessar o repositório de origem do Android:

  1. Crie e navegue até um diretório de trabalho:

    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY
    
  2. Inicialize seu diretório de trabalho para controle de origem:

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

    A opção -b é usada para identificar o branch que você está inicializando. Se -b não for fornecido, o padrão repo init é o branch principal. Para obter uma lista de ramificações e nomes de tags, consulte Tags e compilações de código-fonte .

    A opção -u é obrigatória e usada para especificar um arquivo de manifesto , que é um arquivo XML que especifica onde os vários projetos Git na origem do Android são colocados em seu diretório de trabalho. Neste exemplo, o nome do arquivo de manifesto não é especificado, portanto o comando usa o arquivo de manifesto padrão ( default.xml ).

    A saída deve conter a mensagem:

    $ repo has been initialized in path_to_working_directory
    

Para obter informações sobre o formato do arquivo de manifesto, consulte repo Manifest Format .

Para obter uma lista de todos os comandos do Repo, consulte a referência de comandos do Repo .

Baixe a fonte do Android

Execute o seguinte comando para baixar a árvore de origem do Android em seu diretório de trabalho:

$ repo sync -c -j8

O argumento -c instrui o Repo a buscar a ramificação do manifesto atual do servidor. O comando -j8 divide a sincronização entre threads para uma conclusão mais rápida.

Esta operação deve demorar um pouco mais de uma hora.

Se você tiver algum problema durante o download, consulte Solucionar problemas de rede .

Solucionar problemas de rede

Esta seção fornece diversas sugestões para corrigir problemas de rede que podem causar sincronizações malsucedidas.

Use autenticação para evitar barreiras de cotas

Para proteger os servidores contra uso excessivo, cada endereço IP utilizado para acessar a origem está associado a uma cota.

Ao compartilhar um endereço IP com outros usuários, como ao acessar os repositórios de origem além de um firewall NAT, as cotas podem ser acionadas para padrões normais. Por exemplo, uma cota pode ser acionada quando vários usuários sincronizam novos clientes do mesmo endereço IP, em um curto período.

Para evitar o acionamento de cotas, você pode utilizar o acesso autenticado, que utiliza uma cota separada para cada usuário, independente do endereço IP.

Para ativar o acesso autenticado:

  1. Crie uma senha com o gerador de senha .

  2. Execute o seguinte comando para converter seu cliente para usar autenticação automática (sem alterar a ramificação):

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

    Observe que o prefixo do diretório /a/ aciona a autenticação automática.

Configurar para uso de proxy

Se você estiver baixando a fonte por trás de um proxy, como é comum em alguns ambientes corporativos, certifique-se de especificar explicitamente um proxy para o Repo usar executando estes comandos:

$ 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

Ajuste as configurações de TCP/IP para evitar problemas de conectividade

Embora seja raro, os clientes Linux podem enfrentar problemas de conectividade, como ficar preso no meio de downloads ao receber objetos. Para resolver esse problema, ajuste as configurações da pilha TCP/IP ou use conexões não paralelas. Você deve ter acesso root para modificar a configuração TCP. Para modificar a configuração, emita os seguintes comandos:

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

Use um espelho local para evitar latência de rede

Ao usar vários clientes, você pode criar um espelho local de todo o conteúdo do servidor e sincronizar os clientes desse espelho sem acessar a rede. Siga estas instruções para criar um espelho local em ~/aosp-mirror/ e sincronizar clientes com esse espelho:

  1. Crie e sincronize o espelho:

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

    Esses comandos criam um espelho local em /user/local/aosp/mirror e inicializam o espelho usando o sinalizador --mirror com o comando repo init .

  2. Para sincronizar clientes do espelho:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Por fim, siga estes comandos para sincronizar o espelho com o servidor e sincronizar o cliente com o espelho:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

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

Use um clone parcial

Se você estiver usando o Git versão 2.19 ou posterior, especifique --partial-clone ao executar repo init para superar quaisquer problemas de rede de baixa latência:

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

Em vez de inicializar o Repo para baixar tudo, este comando baixa os objetos Git conforme eles são necessários.

Baixe binários proprietários

O AOSP pode ser executado diretamente em emuladores Cuttlefish, mas o AOSP não pode ser usado em hardware sem bibliotecas proprietárias adicionais específicas do dispositivo. Veja como obter esses binários de dispositivos:

  • Se você estiver baixando o branch main e construindo para um dispositivo Nexus ou Pixel, baixe os binários mais recentes no site de visualização de binários .
  • Se você estiver baixando e compilando a ramificação main e compilando para seu próprio dispositivo, deverá fornecer os binários específicos do dispositivo.
  • Se você estiver baixando e criando uma ramificação marcada, não principal, e construindo para um dispositivo Nexus ou Pixel, baixe o binário específico do dispositivo em Binários para dispositivos Nexus e Pixel .

Extraia binários proprietários

Cada conjunto de binários vem como um script autoextraível em um arquivo compactado. Para extrair e colocar esses binários no local correto da sua árvore de origem:

  1. Extraia o arquivo.
  2. Execute o script de shell de extração automática incluído na raiz da árvore de origem do AOSP.
  3. Concorde com os termos do contrato de licença anexo. Os binários e seus makefiles correspondentes são instalados na hierarquia vendor/ da árvore de origem.

(opcional) Verifique a legitimidade do código

Se você estiver preocupado com a legitimidade do código-fonte, por exemplo, se ele veio do Google, poderá verificar as tags git da ramificação. Para verificar tags Git:

  1. Copie e cole o seguinte bloco de chave em um arquivo de texto, como keyfile.asc .

    -----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-----
    
  2. Execute o seguinte comando para inserir uma chave pública em seu banco de dados de chaves GnuPG. A chave é usada para assinar tags anotadas que representam lançamentos.

    $ gpg --import keyfile.asc
    
  3. Após importar as chaves, você pode verificar qualquer tag executando este comando:

    $ git tag -v TAG_NAME