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 wann die Änderungen vorgenommen wurden. Auf dieser Seite wird beschrieben, wie Sie den Quellbaum für eine bestimmte Android-Codezeile herunterladen.
Um mit einem Werks-Image für ein bestimmtes Gerät zu beginnen, anstatt die Quelle herunterzuladen, siehe 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-Quellrepository ein:
Erstellen Sie ein leeres Verzeichnis für Ihre Arbeitsdateien. Geben Sie ihm einen beliebigen Namen:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Konfigurieren Sie Git mit Ihrem echten Namen und Ihrer E-Mail-Adresse. Um das Code-Review-Tool von Gerrit zu verwenden, benötigen Sie eine E-Mail-Adresse, die mit einem registrierten Google-Konto verknüpft ist . Stellen Sie sicher, dass dies eine Live-Adresse ist, unter der Sie Nachrichten empfangen können. Der Name, den Sie hier angeben, wird in den Zuordnungen für Ihre Codeübermittlungen angezeigt.
git config --global user.name Your Name
git config --global user.email you@example.com
Führen Sie
repo init
aus, um die neueste Version von Repo mit den neuesten Fehlerbehebungen zu erhalten. Sie müssen eine URL für das Manifest angeben, die angibt, wo sich die verschiedenen in der Android-Quelle enthaltenen Repositories in Ihrem Arbeitsverzeichnis befinden.repo init -u https://android.googlesource.com/platform/manifest
So überprüfen Sie den Master-Zweig:
repo init -u https://android.googlesource.com/platform/manifest -b master
Um einen anderen Zweig als master auszuchecken, geben Sie ihn mit
-b
an. Eine Liste der Branches finden Sie unter Quellcode-Tags und -Builds .Für Python2
Für Python3
Wenn Sie die Fehlermeldung "
/usr/bin/env 'python' no such file or directory
" erhalten, verwenden Sie eine der folgenden Lösungen:Wenn Ihr Ubuntu 20.04.2 LTS eine neu installierte (vs. aktualisierte) Linux-Version ist:
sudo ln -s /usr/bin/python3 /usr/bin/python
Wenn Sie Git Version 2.19 oder höher verwenden, können Sie
--partial-clone
angeben, wenn Sierepo init
ausführen. Dabei wird die partielle Klonfunktion von Git genutzt, um Git-Objekte nur bei Bedarf herunterzuladen, anstatt alles herunterzuladen. Da die Verwendung von Teilklonen bedeutet, dass viele Vorgänge mit dem Server kommunizieren müssen, verwenden Sie Folgendes, wenn Sie ein Entwickler sind und ein Netzwerk mit geringer Latenz verwenden:repo init -u https://android.googlesource.com/platform/manifest -b master --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 die
repo init
fehlschlägt, lesen Sie die GitHub -Dokumentation zu symbolischen Links , um diese zu erstellen oder ihre Unterstützung zu aktivieren. Für Nicht-Administratoren siehe den Abschnitt Nicht-Administratoren erlauben, symbolische Links zu erstellen .
Eine erfolgreiche Initialisierung endet mit einer Meldung, dass Repo in Ihrem Arbeitsverzeichnis initialisiert wird. Ihr Client-Verzeichnis enthält jetzt ein .repo
Verzeichnis, in dem Dateien wie das Manifest aufbewahrt werden.
Herunterladen des Android-Quellbaums
Um den Android-Quellbaum aus den im Standardmanifest angegebenen Repositories in Ihr Arbeitsverzeichnis herunterzuladen, führen Sie Folgendes aus:
repo sync
Um Synchronisierungen zu beschleunigen, übergeben Sie die Flags -c
(Current Branch) und -j threadcount
:
repo sync -c -j8
Die Android-Quelldateien werden unter ihren Projektnamen in Ihr Arbeitsverzeichnis heruntergeladen.
Um die Ausgabe zu unterdrücken, übergeben Sie das Flag -q
(leise). 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. beim Zugriff auf die Quell-Repositories von außerhalb einer NAT-Firewall), können die Kontingente auch bei regelmäßigen Nutzungsmustern ausgelöst werden (z. B. wenn viele Benutzer neue Clients von derselben IP-Adresse innerhalb einer kurzer Zeitraum).
In diesem Fall können Sie einen authentifizierten Zugriff verwenden, der dann unabhängig von der IP-Adresse für jeden Benutzer ein separates Kontingent verwendet.
Erstellen Sie zunächst ein Passwort mit dem Passwortgenerator und folgen Sie den Anweisungen auf der Passwortgeneratorseite.
Erzwingen Sie als Nächstes den authentifizierten Zugriff, indem Sie den Manifest-URI https://android.googlesource.com/a/platform/manifest
verwenden. Beachten Sie, wie das Verzeichnispräfix /a/
die obligatorische Authentifizierung auslöst. Mit dem folgenden Befehl können Sie einen vorhandenen Client so konvertieren, dass er die obligatorische Authentifizierung verwendet:
repo init -u https://android.googlesource.com/a/platform/manifest
Fehlerbehebung bei Netzwerkproblemen
Wenn Sie hinter einem Proxy herunterladen (was in einigen Unternehmensumgebungen üblich ist), müssen Sie möglicherweise den Proxy explizit 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>
Seltener treten bei Linux-Clients Verbindungsprobleme auf, die mitten im Download stecken bleiben (typischerweise beim Empfangen von Objekten ). Eine Anpassung der Einstellungen des TCP/IP-Stacks und die Verwendung nicht paralleler 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
Verwenden eines lokalen Spiegels
Wenn Sie mehrere Clients verwenden, insbesondere in Situationen, in denen die Bandbreite knapp ist, ist es besser, eine lokale Spiegelung des gesamten Serverinhalts zu erstellen und die Clients von dieser Spiegelung zu synchronisieren (die keinen Netzwerkzugriff erfordert). Der Download für einen Full-Mirror ist kleiner als der Download von zwei Clients und enthält mehr Informationen.
Diese Anweisungen gehen davon aus, dass der Spiegel in /usr/local/aosp/mirror
erstellt wird. Erstellen und synchronisieren Sie zuerst 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 Mirror synchronisiert ist, können Sie daraus neue Clients erstellen. Beachten Sie, dass Sie einen absoluten Pfad angeben müssen:
mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
Um schließlich einen Client mit dem Server zu synchronisieren, synchronisieren Sie den Spiegel mit dem Server und dann den Client mit dem Spiegel:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
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 zwischen Benutzern oder Computern weiterzugeben.
Überprüfung von Git-Tags
Laden Sie den folgenden öffentlichen Schlüssel in Ihre GnuPG-Schlüsseldatenbank. Der Schlüssel wird verwendet, um annotierte 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 verifizieren mit:
git tag -v TAG_NAME
Besorgen Sie sich proprietäre Binärdateien
AOSP kann nicht nur aus reinem Quellcode verwendet werden und erfordert zusätzliche hardwarebezogene proprietäre Bibliotheken, um ausgeführt zu werden, 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 gekennzeichnete AOSP-Versionszweige ausgeführt werden, von Googles Treibern herunterladen. Diese Binärdateien bieten Zugriff auf zusätzliche Hardwarefunktionen mit nicht offenem Quellcode. Um den AOSP-Master-Zweig zu erstellen, verwenden Sie stattdessen die Vorschau der Binärdateien. Verwenden Sie beim Erstellen des Master-Branch für ein Gerät die Binärdateien für die neueste nummerierte Version oder mit dem neuesten Datum.
Extrahieren Sie proprietäre Binärdateien
Jeder Satz von Binärdateien kommt als selbstextrahierendes Skript in einem komprimierten Archiv. Dekomprimieren Sie jedes Archiv, führen Sie das enthaltene selbstextrahierende Skript im Stammverzeichnis des Quellbaums aus und bestätigen Sie dann, dass Sie den Bedingungen der beigefügten 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 eines früheren Builds mit:
make clobber