L'albero dei sorgenti di Android si trova in un repository Git ospitato da Google. Il repository Git include metadati per l'origine Android, comprese le modifiche all'origine e quando sono state apportate le modifiche. Questa pagina descrive come scaricare l'albero dei sorgenti per una riga di codice Android specifica.
Per iniziare con un'immagine di fabbrica per un dispositivo specifico invece di scaricare l'origine, consulta Selezione di una build del dispositivo .
Inizializzazione di un client Repo
Dopo aver installato Repo Launcher , configura il tuo client per accedere al repository di origine Android:
Crea una directory vuota per contenere i tuoi file di lavoro. Dagli il nome che preferisci:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Configura Git con il tuo vero nome e indirizzo email. Per utilizzare lo strumento di revisione del codice Gerrit, è necessario un indirizzo email collegato a un account Google registrato . Assicurati che questo sia un indirizzo attivo dove puoi ricevere messaggi. Il nome che fornisci qui appare nelle attribuzioni per i tuoi invii di codice.
git config --global user.name Your Name
git config --global user.email you@example.com
Esegui
repo init
per ottenere l'ultima versione di Repo con le correzioni di bug più recenti. Devi specificare un URL per il manifest, che specifica dove si trovano i vari repository inclusi nell'origine Android all'interno della tua directory di lavoro.repo init -u https://android.googlesource.com/platform/manifest
Per controllare il ramo principale:
repo init -u https://android.googlesource.com/platform/manifest -b master
Per estrarre un ramo diverso da master , specificarlo con
-b
. Per un elenco di rami, vedere tag e build del codice sorgente .Per Python 2
Per Python 3
Se viene visualizzato un messaggio di errore "
/usr/bin/env 'python' no such file or directory
", utilizzare una delle seguenti soluzioni:Se il tuo Ubuntu 20.04.2 LTS è una versione Linux appena installata (rispetto a quella aggiornata):
sudo ln -s /usr/bin/python3 /usr/bin/python
Se utilizzi Git versione 2.19 o successiva, puoi specificare
--partial-clone
durante l'esecuzione direpo init
. Questo fa uso della capacità di clonazione parziale di Git per scaricare oggetti Git solo quando necessario, invece di scaricare tutto. Poiché l'utilizzo di cloni parziali significa che molte operazioni devono comunicare con il server, utilizza quanto segue se sei uno sviluppatore e stai utilizzando una rete a bassa latenza:repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
Solo per il sistema operativo Windows: se viene visualizzato un messaggio di errore che indica che non è stato possibile creare collegamenti simbolici, causando il fallimento dell'init del
repo init
, fare riferimento alla documentazione dei collegamenti simbolici di GitHub per crearli o per abilitarne il supporto. Per i non amministratori, vedere la sezione Consentire ai non amministratori di creare collegamenti simbolici .
Un'inizializzazione riuscita termina con un messaggio che indica che Repo è stato inizializzato nella directory di lavoro. La directory del client ora contiene una directory .repo
in cui vengono conservati i file come il manifest.
Download dell'albero dei sorgenti di Android
Per scaricare l'albero dei sorgenti Android nella tua directory di lavoro dai repository come specificato nel manifest predefinito, esegui:
repo sync
Per velocizzare le sincronizzazioni, passa i flag -c
(ramo corrente) e -j threadcount
:
repo sync -c -j8
I file di origine Android vengono scaricati nella directory di lavoro con i nomi dei loro progetti.
Per sopprimere l'output, passare il flag -q
(quiet). Per tutte le opzioni, vedere il riferimento ai comandi Repo .
Utilizzo dell'autenticazione
Per impostazione predefinita, l'accesso al codice sorgente di Android è anonimo. Per proteggere i server da un uso eccessivo, ogni indirizzo IP è associato a una quota.
Quando si condivide un indirizzo IP con altri utenti (ad esempio, quando si accede ai repository di origine da oltre un firewall NAT), le quote possono attivarsi anche per schemi di utilizzo regolari (ad esempio, se molti utenti sincronizzano nuovi client dallo stesso indirizzo IP all'interno di un breve periodo).
In tal caso, puoi utilizzare l'accesso autenticato, che quindi utilizza una quota separata per ciascun utente, indipendentemente dall'indirizzo IP.
Innanzitutto, crea una password con il generatore di password e segui le istruzioni nella pagina del generatore di password.
Quindi, forza l'accesso autenticato utilizzando l'URI manifest https://android.googlesource.com/a/platform/manifest
. Nota come il prefisso della directory /a/
attiva l'autenticazione obbligatoria. È possibile convertire un client esistente per utilizzare l'autenticazione obbligatoria con il comando seguente:
repo init -u https://android.googlesource.com/a/platform/manifest
Risoluzione dei problemi di rete
Quando si esegue il download da dietro un proxy (cosa comune in alcuni ambienti aziendali), potrebbe essere necessario specificare esplicitamente il proxy da utilizzare per 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>
Più raramente, i client Linux riscontrano problemi di connettività, rimanendo bloccati nel mezzo dei download (in genere durante la ricezione di oggetti ). La regolazione delle impostazioni dello stack TCP/IP e l'utilizzo di comandi non paralleli possono migliorare la situazione. È necessario disporre dell'accesso come root per modificare l'impostazione TCP:
sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1
Utilizzo di un mirror locale
Quando si utilizzano più client, soprattutto in situazioni in cui la larghezza di banda è scarsa, è meglio creare un mirror locale dell'intero contenuto del server e sincronizzare i client da quel mirror (che non richiede l'accesso alla rete). Il download per un mirror completo è inferiore al download di due client e contiene più informazioni.
Queste istruzioni presuppongono che il mirror venga creato in /usr/local/aosp/mirror
. Innanzitutto, crea e sincronizza il mirror stesso. Nota il flag --mirror
, che puoi specificare solo durante la creazione di un nuovo client:
mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync
Quando il mirror è sincronizzato, puoi creare nuovi client da esso. Nota che devi specificare un percorso assoluto:
mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
Infine, per sincronizzare un client con il server, sincronizza il mirror con il server, quindi il client con il mirror:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync
È possibile archiviare il mirror su un server LAN e accedervi tramite NFS, SSH o Git. È anche possibile memorizzarlo su un'unità rimovibile e passare quell'unità tra utenti o macchine.
Verifica dei tag Git
Carica la seguente chiave pubblica nel tuo database di chiavi GnuPG. La chiave viene utilizzata per firmare i tag annotati che rappresentano le versioni.
gpg --import
Copia e incolla la chiave qui sotto, quindi digita EOF
( Ctrl-D ) per terminare l'input ed elaborare le chiavi.
-----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-----
Dopo aver importato le chiavi, puoi verificare qualsiasi tag con:
git tag -v TAG_NAME
Ottieni binari proprietari
AOSP non può essere utilizzato solo dal codice sorgente puro e richiede l'esecuzione di librerie proprietarie relative all'hardware aggiuntive, ad esempio per l'accelerazione grafica hardware. Vedere le sezioni seguenti per i collegamenti per il download e i file binari del dispositivo per risorse aggiuntive.
Scarica binari proprietari
Puoi scaricare i binari ufficiali per i dispositivi supportati che eseguono rami di rilascio AOSP taggati dai driver di Google . Questi binari aggiungono l'accesso a funzionalità hardware aggiuntive con codice non open source. Per creare il ramo principale AOSP, utilizzare invece Binaries Preview . Quando si compila il ramo master per un dispositivo, utilizzare i file binari per la versione numerata più recente o con la data più recente.
Estrai binari proprietari
Ogni set di binari viene fornito come uno script autoestraente in un archivio compresso. Decomprimi ogni archivio, esegui lo script autoestraente incluso dalla radice dell'albero dei sorgenti, quindi conferma di accettare i termini del contratto di licenza allegato. I binari ei loro makefile corrispondenti vengono installati nella gerarchia del vendor/
dell'albero dei sorgenti.
Pulire
Per garantire che i file binari appena installati vengano presi correttamente in considerazione dopo essere stati estratti, eliminare l'output esistente di qualsiasi build precedente utilizzando:
make clobber