Herunterladen der Quelle

Der Android-Quellbaum befindet sich in einem von Google gehosteten Git-Repository. Das Git-Repository enthält Metadaten für die Android-Quelle, einschließlich Änderungen an der Quelle und dem Zeitpunkt, an dem die Änderungen vorgenommen wurden. Auf dieser Seite wird beschrieben, wie Sie den Quellbaum für eine bestimmte Android-Codezeile herunterladen.

Informationen dazu, wie Sie mit einem werkseitigen Image für ein bestimmtes Gerät beginnen, anstatt die Quelle herunterzuladen, finden Sie unter Auswählen eines Geräte-Builds .

Initialisieren eines Repo-Clients

Richten Sie nach der Installation des Repo Launcher Ihren Client für den Zugriff auf das Android-Quell-Repository ein:

  1. Erstellen Sie ein leeres Verzeichnis für Ihre Arbeitsdateien. Geben Sie ihm einen beliebigen Namen:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Konfigurieren Sie Git mit Ihrem echten Namen und Ihrer E-Mail-Adresse. Um das Gerrit-Codeüberprüfungstool verwenden zu können, benötigen Sie eine E-Mail-Adresse, die mit einem registrierten Google-Konto verknüpft ist. Stellen Sie sicher, dass es sich um eine Live-Adresse handelt, unter der Sie Nachrichten empfangen können. Der Name, den Sie hier angeben, wird in den Zuordnungen für Ihre Codeeinreichungen angezeigt.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Führen Sie repo init , um die neueste Version von Repo mit den aktuellsten Fehlerkorrekturen zu erhalten. Sie müssen eine URL für das Manifest angeben, die angibt, wo die verschiedenen in der Android-Quelle enthaltenen Repositorys in Ihrem Arbeitsverzeichnis abgelegt werden.

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

    So schauen Sie sich den Hauptzweig an:

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

    Um einen anderen Zweig als main auszuchecken, geben Sie ihn mit -b an. Eine Liste der Zweige finden Sie unter Quellcode-Tags und Builds .

    Für Python 2

    Für Python 3

    Wenn Sie die Fehlermeldung „ /usr/bin/env 'python' no such file or directory “ erhalten, verwenden Sie eine der folgenden Lösungen:

    Wenn es sich bei Ihrem Ubuntu 20.04.2 LTS um eine neu installierte (bzw. aktualisierte) Linux-Version handelt:

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

    Wenn Sie Git Version 2.19 oder höher verwenden, können Sie beim Ausführen repo init --partial-clone angeben. Dabei wird die teilweise Klonfunktion von Git genutzt, um Git-Objekte nur bei Bedarf herunterzuladen, anstatt alles herunterzuladen. Da die Verwendung teilweiser Klone bedeutet, dass viele Vorgänge mit dem Server kommunizieren müssen, verwenden Sie Folgendes, wenn Sie Entwickler sind und ein Netzwerk mit geringer Latenz verwenden:

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

    Nur für Windows-Betriebssysteme: Wenn Sie eine Fehlermeldung erhalten, die besagt, dass symbolische Links nicht erstellt werden konnten, was dazu führt, dass repo init fehlschlägt, lesen Sie die GitHub- Dokumentation zu symbolischen Links , um diese zu erstellen oder ihre Unterstützung zu aktivieren. Informationen für Nicht-Administratoren finden Sie im Abschnitt „Zulassen, dass Nicht-Administratoren symbolische Links erstellen“ .

Eine erfolgreiche Initialisierung endet mit einer Meldung, die besagt, dass Repo in Ihrem Arbeitsverzeichnis initialisiert wurde. Ihr Client-Verzeichnis enthält jetzt ein .repo Verzeichnis, in dem Dateien wie das Manifest gespeichert werden.

Laden Sie den Android-Quellbaum herunter

Um den Android-Quellbaum aus den im Standardmanifest angegebenen Repositorys in Ihr Arbeitsverzeichnis herunterzuladen, führen Sie Folgendes aus:

repo sync

Um die Synchronisierung zu beschleunigen, übergeben Sie die Threadcount-Flags -c (aktueller Zweig) und -j threadcount :

repo sync -c -j8

Die Android-Quelldateien werden unter ihrem Projektnamen in Ihr Arbeitsverzeichnis heruntergeladen.

Um die Ausgabe zu unterdrücken, übergeben Sie das Flag -q (quiet). Alle Optionen finden Sie in der Repo-Befehlsreferenz .

Authentifizierung verwenden

Standardmäßig ist der Zugriff auf den Android-Quellcode anonym. Um die Server vor übermäßiger Nutzung zu schützen, ist jeder IP-Adresse ein Kontingent zugeordnet.

Wenn Sie eine IP-Adresse mit anderen Benutzern teilen (z. B. wenn Sie von außerhalb einer NAT-Firewall auf die Quellrepositorys zugreifen), können die Kontingente auch bei regelmäßigen Nutzungsmustern ausgelöst werden (z. B. wenn viele Benutzer neue Clients von derselben IP-Adresse innerhalb eines Zeitraums synchronisieren). kurzer Zeitraum).

In diesem Fall können Sie einen authentifizierten Zugriff nutzen, der dann unabhängig von der IP-Adresse für jeden Benutzer ein eigenes Kontingent verwendet.

Erstellen Sie zunächst ein Passwort mit dem Passwortgenerator und befolgen Sie die Anweisungen auf der Passwortgenerator-Seite.

Erzwingen Sie als Nächstes den authentifizierten Zugriff mithilfe des Manifest-URI https://android.googlesource.com/a/platform/manifest . Beachten Sie, wie das Verzeichnispräfix /a/ eine obligatorische Authentifizierung auslöst. Mit dem folgenden Befehl können Sie einen vorhandenen Client so umwandeln, dass er die obligatorische Authentifizierung verwendet:

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

Beheben von Netzwerkproblemen

Beim Herunterladen hinter einem Proxy (was in manchen Unternehmensumgebungen üblich ist) müssen Sie möglicherweise explizit den Proxy angeben, den Repo verwenden soll:

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>

In selteneren Fällen kommt es bei Linux-Clients zu Verbindungsproblemen, da sie mitten im Download hängen bleiben (normalerweise beim Empfang von Objekten ). Eine Anpassung der Einstellungen des TCP/IP-Stacks und die Verwendung nichtparalleler Befehle können die Situation verbessern. Sie müssen Root-Zugriff haben, um die TCP-Einstellung zu ändern:

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

Verwendung eines lokalen Spiegels

Wenn Sie mehrere Clients verwenden, können Sie einen lokalen Spiegel des gesamten Serverinhalts erstellen und Clients von diesem Spiegel aus synchronisieren (wofür kein Netzwerkzugriff erforderlich ist).

Bei diesen Anweisungen wird davon ausgegangen, dass der Spiegel in /usr/local/aosp/mirror erstellt wird. Erstellen und synchronisieren Sie zunächst den Spiegel selbst. Beachten Sie das Flag --mirror , das Sie nur beim Erstellen eines neuen Clients angeben können:

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

Wenn der Spiegel synchronisiert ist, können Sie daraus neue Clients erstellen. Beachten Sie, dass Sie einen absoluten Pfad angeben müssen:

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

Um schließlich einen Client mit dem Server zu synchronisieren, synchronisieren Sie zunächst den Spiegel mit dem Server und dann den Client mit dem Spiegel:

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

Es ist möglich, den Spiegel auf einem LAN-Server zu speichern und über NFS, SSH oder Git darauf zuzugreifen. Es ist auch möglich, es auf einem Wechseldatenträger zu speichern und dieses Laufwerk an Benutzer oder Computer weiterzugeben.

Git-Tags überprüfen

Laden Sie den folgenden öffentlichen Schlüssel in Ihre GnuPG-Schlüsseldatenbank. Der Schlüssel wird verwendet, um kommentierte Tags zu signieren, die Releases darstellen.

gpg --import

Kopieren Sie den Schlüssel unten und fügen Sie ihn ein. Geben Sie dann EOF ( Strg-D ) ein, um die Eingabe zu beenden und die Schlüssel zu verarbeiten.

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

Nach dem Importieren der Schlüssel können Sie jedes Tag überprüfen mit:

git tag -v TAG_NAME

Erhalten Sie proprietäre Binärdateien

AOSP kann nicht nur aus reinem Quellcode verwendet werden und erfordert zur Ausführung zusätzliche hardwarebezogene proprietäre Bibliotheken, beispielsweise für die Hardware-Grafikbeschleunigung. In den folgenden Abschnitten finden Sie Download-Links und Geräte-Binärdateien für zusätzliche Ressourcen.

Laden Sie proprietäre Binärdateien herunter

Sie können offizielle Binärdateien für die unterstützten Geräte, auf denen getaggte AOSP-Versionszweige ausgeführt werden, von den Treibern von Google herunterladen. Diese Binärdateien bieten Zugriff auf zusätzliche Hardwarefunktionen mit nicht offenem Quellcode. Um den AOSP-Hauptzweig zu erstellen, verwenden Sie stattdessen die Binärvorschau . Wenn Sie den Hauptzweig für ein Gerät erstellen, verwenden Sie die Binärdateien für die neueste nummerierte Version oder mit dem neuesten Datum.

Extrahieren Sie proprietäre Binärdateien

Jeder Satz Binärdateien liegt als selbstextrahierendes Skript in einem komprimierten Archiv vor. Dekomprimieren Sie jedes Archiv, führen Sie das mitgelieferte selbstextrahierende Skript im Stammverzeichnis des Quellbaums aus und bestätigen Sie dann, dass Sie den Bedingungen der beiliegenden Lizenzvereinbarung zustimmen. Die Binärdateien und ihre passenden Makefiles werden in der vendor/ Hierarchie des Quellbaums installiert.

Aufräumen

Um sicherzustellen, dass die neu installierten Binärdateien nach dem Extrahieren ordnungsgemäß berücksichtigt werden, löschen Sie die vorhandene Ausgabe aller vorherigen Builds mit:

make clobber