Articles

Einrichten einer Build-Umgebung

In diesem Abschnitt wird beschrieben, wie Sie Ihre lokale Arbeitsumgebung einrichten, um die Android-Quelldateien zu erstellen. Sie müssen Linux oder macOS verwenden; Das Erstellen unter Windows wird derzeit nicht unterstützt.

Eine Übersicht über den gesamten Code-Review- und Code-Update-Prozess finden Sie unter Lebensdauer eines Patches.

Auswählen eines Zweigs

Einige Anforderungen an die Build-Umgebung werden durch die Version des Quellcodes bestimmt, die Sie kompilieren möchten. Eine vollständige Liste der verfügbaren Zweige finden Sie unter Build-Nummern. Sie können auch den neuesten Quellcode herunterladen und erstellen (master ), in diesem Fall lassen Sie einfach die Verzweigungsspezifikation weg, wenn Sie das Repository initialisieren.

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

Einrichten einer Linux buildenvironment

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

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

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

Erforderliche Pakete installieren(Ubuntu 18.04)

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

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev 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 gcc-multilib g++-multilib libc6-dev-i386 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 von master oder neueren Versionen nicht unterstützt.

Installation erforderlicher Pakete (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 Versionen von AOSP 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 g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

Auf Ubuntu 10.10:

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

Auf Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Konfigurieren des USB-Zugriffs

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 out/ Unterverzeichnis des passenden Quellbaums gespeichert.

Auf einigen Computern 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 Absturzfestigkeit 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 wird nach dem Verzeichnis benannt, das den Quellbaum enthält. Wenn Sie beispielsweise Quellbäume /source/master1 und /source/master2 haben und OUT_DIR_COMMON_BASE auf /output , sind die Ausgabeverzeichnisse /output/master1 und /output/master2.

Vermeiden Sie es, mehrere Quellbäume in Verzeichnissen mit demselben Namen zu speichern, da die Quellbäume am Ende ein Ausgabeverzeichnis mit unvorhersehbaren Ergebnissen teilen würden. Dies wird nur von Jelly Bean (4.1) und höher unterstützt, einschließlich des master -Zweigs.

Einrichten einer macOS-Build-Umgebung

In einer Standardinstallation wird macOS auf einem Dateisystem ausgeführt, bei dem die Groß- und Kleinschreibung beachtet wird. Dieser Typ von Dateisystem wird von Git nicht unterstützt und führt dazu, dass sich einige Git-Befehle (z. B. git status ) abnormal verhalten. Aus diesem Grund empfehlen wir, dass Sie immer mit den AOSP-Quelldateien in einem Dateisystem arbeiten, in dem die Groß- und Kleinschreibung beachtet wird. Dies kann ziemlich einfach mit einem Disk-Image erfolgen, wie unten beschrieben.

Wenn das richtige Dateisystem verfügbar ist, ist das Erstellen des master Zweigs in einer modernen macOS-Umgebung unkompliziert. Frühere Zweige erfordern einige zusätzliche Tools und SDKs.

Diskimage mit Berücksichtigung der Groß- und Kleinschreibung erstellen

Sie können ein Diskimage mit Berücksichtigung der Groß- und Kleinschreibung in Ihrer vorhandenen macOS-Umgebung erstellen. Um das Image zu erstellen, starten Sie das Festplatten-Dienstprogramm und wählen Sie Neues Image. Eine Größe von 250 GB ist das Minimum, um den Build abzuschließen. Die Verwendung spärlicher Bilder spart Platz und ermöglicht bei Bedarf Wachstum. Wählen Sie case sensitive, journaled als Volume-Format aus.

Sie können das Dateisystem auch aus einer Shell mit dem folgenden Befehl erstellen:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage

Dadurch wird eine .dmg.sparseimage -Datei erstellt, die beim Mounten als Laufwerk mit der für die Android-Entwicklung erforderlichen Formatierung fungiert.

Wenn Sie später ein größeres Volume benötigen, können Sie die Größe des Sparse-Images mit dem folgenden Befehl ändern:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

Für ein Disk-Image mit dem Namen android.dmg.sparseimage, das in Ihrem Home-Verzeichnis gespeichert ist, können Sie Hilfsfunktionen zu ~/.bash_profile:

  • Um das Image zu mounten, wenn Sie ausführen mountAndroid
    # mount the android file imagemountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
  • Um es zu mounten, wenn Sie ausführen umountAndroid
    # unmount the android file imageumountAndroid() { hdiutil detach /Volumes/android; }

Nachdem Sie nachdem Sie das android Volume gemountet haben, erledigen Sie dort Ihre gesamte Arbeit. Sie können es wie ein externes Laufwerk auswerfen (aushängen).

Xcode und andere Pakete installieren

  1. Installieren Sie die Xcode-Befehlszeilentools:
    xcode-select --install

    Für ältere Versionen von macOS (10.8 oder niedriger) müssen Sie Xcode von der Apple Developer Site installieren. Wenn Sie nicht als Apple Developer registriert sind, müssen Sie zum Herunterladen eine Apple ID erstellen.

  2. Installieren Sie entweder MacPorts oder Homebrew für die Paketverwaltung.
  3. Stellen Sie sicher, dass sich das zugehörige Verzeichnis in Ihrem Pfad befindet ~/.bash_profile Datei:
    1. MacPorts – /opt/local/bin muss vor /usr/bin
      export PATH=/opt/local/bin:$PATH
    2. Homebrew – /usr/local/bin
      export PATH=/usr/local/bin:$PATH
  4. Für MacPorts, Ausgabe:
    POSIXLY_CORRECT=1 sudo port install git gnupg
  5. Für Homebrew, Ausgabe:
    brew install git gnupg2

Festlegen eines Dateideskriptorlimits

Unter macOS ist das Standardlimit für die Anzahl der gleichzeitig geöffneten Dateideskriptoren zu niedrig, und ein hochparalleler Erstellungsprozess kann dieses Limit überschreiten. Um die Obergrenze zu erhöhen, fügen Sie Ihrem ~/.bash_profile die folgenden Zeilen hinzu:

# set the number of open files to be 1024ulimit -S -n 1024

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.