Einrichten einer Build-Umgebung

In diesem Abschnitt wird beschrieben, wie Sie Ihre lokale Arbeitsumgebung zum Erstellen der Android-Quelldateien einrichten. Sie müssen Linux verwenden; Das Erstellen unter MacOS oder Windows wird nicht unterstützt. Beachten Sie auch die wichtige Änderung an der Binärdatei /usr/bin/python .

Eine Übersicht über den gesamten Codeüberprüfungs- und Codeaktualisierungsprozess finden Sie unter Lebensdauer eines Patches .

Eine Filiale auswählen

Einige Anforderungen an die Build-Umgebung werden durch die Version des Quellcodes bestimmt, den Sie kompilieren möchten. Eine vollständige Liste der verfügbaren Zweige finden Sie unter Build-Nummern . Sie können sich auch dafür entscheiden, den neuesten Quellcode (genannt main ) herunterzuladen und zu erstellen. In diesem Fall lassen Sie die Zweigangabe einfach weg, wenn Sie das Repository initialisieren.

Nachdem Sie einen Zweig ausgewählt haben, befolgen Sie die entsprechenden Anweisungen unten, um Ihre Build-Umgebung einzurichten.

Einrichten einer Linux-Build-Umgebung

Diese Anweisungen gelten für alle Zweige, einschließlich main .

Der Android-Build wird routinemäßig intern auf Ubuntu LTS (14.04) und Debian-Tests getestet. Die meisten anderen Distributionen sollten über die erforderlichen Build-Tools verfügen.

Für Gingerbread (2.3.x) und höhere Versionen, einschließlich des main , ist eine 64-Bit-Umgebung erforderlich. Ältere Versionen können auf 32-Bit-Systemen kompiliert werden.

Erforderliche Pakete installieren (Ubuntu 18.04 und höher)

Sie benötigen eine 64-Bit-Version von Ubuntu.

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

Erforderliche Pakete installieren (Ubuntu 14.04)

Sie benötigen eine 64-Bit-Version von Ubuntu (14.04 wird empfohlen).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Erforderliche Pakete installieren (Ubuntu 12.04)

Sie können Ubuntu 12.04 verwenden, um ältere Versionen von Android zu erstellen. Version 12.04 wird in main oder aktuellen Versionen nicht unterstützt.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Erforderliche Pakete installieren (Ubuntu 10.04-11.10)

Das Erstellen auf Ubuntu 10.04-11.10 wird nicht mehr unterstützt, kann aber für das Erstellen älterer AOSP-Versionen nützlich sein.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc

Unter Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

Unter Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

USB-Zugriff konfigurieren

Installieren Sie einen von der Community verwalteten Standardsatz von udev Regeln für alle Android-Geräte, indem Sie den Anweisungen zum Einrichten eines Geräts für die Entwicklung folgen.

Verwendung eines separaten Ausgabeverzeichnisses

Standardmäßig wird die Ausgabe jedes Builds im Unterverzeichnis out/ des entsprechenden Quellbaums gespeichert. Sie können dies überschreiben, indem Sie die Umgebungsvariable OUT_DIR exportieren. Zum Beispiel:

export OUT_DIR=out_mytarget

Dadurch wird die Ausgabe des Builds im Unterverzeichnis out_mytarget/ des Quellbaums gespeichert. Wenn Sie denselben Quellbaum zum Erstellen mehrerer Ziele verwenden, wird empfohlen, für jedes Ziel ein separates OUT_DIR zu verwenden.

Auf einigen Maschinen mit mehreren Speichergeräten sind Builds schneller, wenn die Quelldateien und die Ausgabe auf separaten Volumes gespeichert werden. Für zusätzliche Leistung kann die Ausgabe in einem Dateisystem gespeichert werden, das auf Geschwindigkeit statt auf Absturzsicherheit optimiert ist, da alle Dateien neu generiert werden können, wenn das Dateisystem beschädigt ist.

Um dies einzurichten, exportieren Sie die Variable OUT_DIR_COMMON_BASE , um auf den Speicherort zu verweisen, an dem Ihre Ausgabeverzeichnisse gespeichert werden.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

Das Ausgabeverzeichnis für jeden einzelnen Quellbaum ist nach dem Verzeichnis benannt, in dem sich der Quellbaum befindet. Wenn Sie beispielsweise über die Quellbäume /source/main1 und /source/main2 verfügen und OUT_DIR_COMMON_BASE auf /output festgelegt ist, sind die Ausgabeverzeichnisse /output/main1 und /output/main2 .

Vermeiden Sie es, mehrere Quellbäume in Verzeichnissen mit demselben Namen zu speichern, da sich die Quellbäume sonst ein gemeinsames Ausgabeverzeichnis teilen würden, was zu unvorhersehbaren Ergebnissen führen würde. Dies wird nur auf Jelly Bean (4.1) und höher unterstützt, einschließlich des main .

Als nächstes: Laden Sie die Quelle herunter

Ihre Build-Umgebung ist startklar! Fahren Sie mit dem Herunterladen der Quelle fort.