Folgen Sie der Anleitung auf dieser Seite, um Android zu erstellen.
Build-Umgebung einrichten
Rufen Sie im Arbeitsverzeichnis das Skript envsetup.sh auf, um die Build-Umgebung einzurichten:
source build/envsetup.shDieses Skript importiert mehrere Befehle, mit denen Sie mit dem Android-Quellcode arbeiten können, einschließlich der Befehle, die auf dieser Seite verwendet werden. Den Quellcode des
Skripts finden Sie unter
platform/build/envsetup.sh.
Geben Sie hmm ein, um die integrierte Hilfe aufzurufen.
Ziel auswählen
Bevor Sie Android erstellen, müssen Sie ein Ziel für den Build festlegen. Ein Ziel gibt die Zielplattform an, für die Sie den Build erstellen. Verwenden Sie den Befehl lunch gefolgt von einem String, der das Ziel darstellt, um das Ziel für den Build festzulegen. Beispiel:
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugSie sollten eine Zusammenfassung Ihres Ziels und Ihrer Build-Umgebung sehen:
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================Der String, der das Ziel darstellt, hat das folgende Format:
lunch product_name-release_config-build_variantDie Komponenten dieses Strings sind:
product_nameist der Name des Produkts, das Sie erstellen möchten, z. B.aosp_cf_x86_64_only_phoneoderaosp_husky. Ihr spezifischerproduct_namekann ein eigenes Format für Ihr Gerät haben. Das Format, das Google für seine Geräte verwendet, hat jedoch die folgenden Komponenten:aospbezieht sich auf die Android Open Source Platform.- (optional)
cfwird verwendet, wenn das Ziel im Cuttlefish-Emulator ausgeführt werden soll. - Architektur und Hardware (Codename), z. B.
x86_64_only_phoneoderhusky, der Codename für das Pixel 8 Pro. Eine Liste der Codenamen für Google-Geräte finden Sie unter Codenamen von Geräten.
release_configist auf eine Release konfiguration festgelegt, z. B. die Releasekonfiguration für die Entwicklungaosp_current. Eine Releasekonfiguration gibt bestimmte Funktionen und Code an, die sich hinter Flags für die Einführung von Funktionen befinden und für einen Build entweder aktiviert oder deaktiviert sind. Weitere Informationen zu Releasekonfigurationen finden Sie unter Werte für Funktions-Flags festlegen.Der Teil
build_variantdes Strings kann einen der drei Werte in der folgenden Tabelle haben:build_variantBeschreibung userDiese Build-Variante bietet eingeschränkten Sicherheitszugriff und ist für die Produktion geeignet. userdebugDiese Build-Variante hilft Geräteentwicklern, die Leistung und den Energieverbrauch von Releases in der Entwicklung zu verstehen. Wenn Sie mit einem
userdebugBuild entwickeln, folgen Sie den Richtlinien für userdebug.eng| Diese Build-Variante hat eine schnellere Build-Zeit und eignet sich am besten für die tägliche Entwicklung, wenn Sie sich nicht um Leistung und Energieverbrauch kümmern.
Wenn Sie lunch ohne Argumente ausführen, wird eine Liste häufig verwendeter Ziele angezeigt.
Sie können auch eigene Zielstrings erstellen, indem Sie die Elemente des
Zielstrings mit den Informationen auf dieser Seite und den Codenamen
die bestimmte Google-Hardware darstellen, unter Codenamen von Geräten zusammensetzen.
Aktuelles Ziel ansehen
Führen Sie Folgendes aus, um die aktuellen Lunch-Einstellungen zu sehen:
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Code erstellen
Führen Sie den folgenden Befehl aus, um Ihr Ziel zu erstellen. Je nach Spezifikation Ihrer Workstation kann der erste Build weniger als eine Stunde bis zu einigen Stunden dauern. Nachfolgende Builds dauern deutlich weniger Zeit.
mDie Ausgabe Ihres Builds wird in $OUT_DIR angezeigt. Wenn Sie verschiedene Ziele erstellen, wird jeder Ziel-Build in $OUT_DIR angezeigt.
Der Befehl m erstellt den Build von der obersten Ebene der Struktur aus. Sie können m also in Unterverzeichnissen ausführen. Wenn die Umgebungsvariable TOP festgelegt ist, verwendet der Befehl m sie. Wenn TOP nicht festgelegt ist, sucht der Befehl m in der Struktur vom aktuellen Verzeichnis aus nach der obersten Ebene.
Der Befehl m kann parallele Aufgaben mit einem Argument -jN verarbeiten. Wenn Sie kein -j-Argument angeben, wählt das Build-System automatisch eine Anzahl paralleler Aufgaben aus, die es für Ihr System als optimal erachtet.
Sie können bestimmte Module anstelle des vollständigen Geräte-Images erstellen, indem Sie die Modulnamen in der Befehlszeile m auflisten. Außerdem bietet der Befehl m einige Pseudo-Ziele, sogenannte Goals. m nothing erstellt beispielsweise nichts, analysiert und validiert aber die Build-Struktur. Eine Liste gültiger Ziele erhalten Sie mit dem Befehl m help.
Build-Fehler beheben (Android 17 oder höher)
Dieser Abschnitt enthält Anleitungen zum Beheben von Fehlern, die durch den Versuch entstehen, die schreibgeschützte AOSP-Codebasis während des Builds zu ändern.
Build-Versuch führt zu Fehlern im schreibgeschützten Dateisystem
Während des Builds ist die AOSP-Quellstruktur schreibgeschützt. Wenn der ausgeführte Build versucht, die Quellstruktur während der Produktkonfiguration oder eines anderen Teils des Builds zu ändern, kann der Build fehlschlagen und Fehler im schreibgeschützten Dateisystem melden. Mit diesen Optionen können Sie die Quellstruktur vorübergehend in „Lesen/Schreiben“ ändern:
Wenn Sie die gesamte Quellstruktur während des Builds in „Lesen/Schreiben“ ändern möchten, fügen Sie der Build-Umgebung
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=truehinzu.Wenn Sie einen Teil der Struktur während des Builds in „Lesen/Schreiben“ ändern möchten, verwenden Sie
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ..."Die Pfade sollten die Pfade der Verzeichnisse sein, in denen Schreibvorgänge zulässig sein sollen, relativ zur obersten Ebene des Arbeitsbereichs.
Build-Fehler beheben (8.0 oder früher)
Wenn Sie AOSP 8 oder früher erstellen, kann m abgebrochen werden, wenn ein Problem mit Ihrer Java-Version auftritt. Beispiel:
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
Mögliche Ursachen und Lösungen:
- Sie haben das richtige JDK nicht installiert, wie in den JDK-Abschnitten unter Vorbereitung auf die AOSP-Entwicklung (2.3–8.0) angegeben.
- In Ihrem Pfad ist ein anderes, zuvor installiertes JDK vorhanden. Fügen Sie das richtige JDK am Anfang Ihres Pfads hinzu oder entfernen Sie das problematische JDK.