Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Android erstellen

Befolgen Sie diese Anweisungen, um mit dem Erstellen von Android zu beginnen.

Umgebung einrichten

Initialisieren Sie die Umgebung mit dem Skript envsetup.sh :

source build/envsetup.sh

oder

. build/envsetup.sh

Im Skript unter platform / build / envsetup.sh finden Sie Beschreibungen verwandter Befehle, einschließlich lunch zum Auswählen von Gerätezielen und tapas zum Erstellen entbündelter Apps, z. B. der Referenz-TV-App .

Sie müssen diesen Befehl nach jeder repo sync , um Änderungen an diesem Skript zu übernehmen. Beachten Sie, dass das Ersetzen der source durch . (ein einzelner Punkt) speichert einige Zeichen, und die Kurzform wird in der Dokumentation häufiger verwendet.

Das Skript envsetup.sh importiert mehrere Befehle, mit denen Sie mit dem Android-Quellcode arbeiten können, einschließlich der in dieser Übung verwendeten Befehle.

Führen Sie Folgendes aus, um die vollständige Liste der verfügbaren Befehle anzuzeigen:

hmm

Ein Ziel auswählen

Wählen Sie, welches Ziel mit dem lunch . lunch product_name - build_variant wählt product_name als zu erstellendes Produkt und build_variant als zu erstellende Variante aus und speichert diese Auswahlen in der Umgebung, die durch nachfolgende Aufrufe von m und anderen ähnlichen Befehlen gelesen werden soll.

Die genaue Konfiguration kann als Argument übergeben werden. Der folgende Befehl bezieht sich beispielsweise auf einen vollständigen Build für den Emulator, bei dem alle Debugging-Vorgänge aktiviert sind:

lunch aosp_arm-eng

Wenn Sie ohne Argumente ausgeführt werden, werden Sie beim lunch aufgefordert, ein Ziel aus dem Menü auszuwählen. Unter Auswählen eines Geräte-Builds finden Sie die Build-Konfigurationen aller vorhandenen Geräte.

Alle Build-Ziele haben die Form BUILD-BUILDTYPE , wobei BUILD ein Codename ist, der sich auf die jeweilige Feature-Kombination bezieht. BUILDTYPE ist eine der folgenden.

Build-Typ Verwenden
Benutzer Beschränkter Zugang; für die Produktion geeignet
userdebug Wie Benutzer, jedoch mit Root-Zugriff und Debug-Funktion; bevorzugt zum Debuggen
dt Entwicklungskonfiguration mit zusätzlichen Debugging-Tools

Der Userdebug-Build sollte sich genauso verhalten wie der User-Build, mit der Möglichkeit, zusätzliches Debugging zu aktivieren, das normalerweise das Sicherheitsmodell der Plattform verletzt. Dadurch eignet sich der Userdebug-Build gut für Benutzertests mit besseren Diagnosefunktionen. Befolgen Sie bei der Entwicklung mit dem Userdebug-Build die Userdebug-Richtlinien .

Der eng-Build priorisiert die technische Produktivität für Ingenieure, die an der Plattform arbeiten. Der eng-Build deaktiviert verschiedene Optimierungen, die für eine gute Benutzererfahrung verwendet werden. Andernfalls verhält sich der eng-Build ähnlich wie der user- und der userdebug-Build, sodass Geräteentwickler sehen können, wie sich der Code in diesen Umgebungen verhält.

Weitere Informationen zum Erstellen und Ausführen auf tatsächlicher Hardware finden Sie unter Ausführen von Builds .

Code erstellen

Dieser Abschnitt enthält eine kurze Zusammenfassung, um sicherzustellen, dass die Einrichtung abgeschlossen ist.

Baue alles mit m . m kann parallele Aufgaben mit einem -jN Argument verarbeiten. Wenn Sie kein -j Argument -j , wählt das Build-System automatisch eine parallele Taskanzahl aus, die es für Ihr System für optimal hält.

m

Wie oben erläutert, können Sie anstelle des vollständigen Geräteimages bestimmte Module erstellen, indem Sie deren Namen in Ihrer m Befehlszeile auflisten. Zusätzlich bietet m einige Pseudotargets für spezielle Zwecke. Einige Beispiele sind:

  • droid - m droid ist der normale Build. Dieses Ziel ist hier, weil das Standardziel einen Namen erfordert.
  • all - m all baut alles auf, was m droid tut, plus alles, was nicht das droid tag hat. Der Build-Server führt dies aus, um sicherzustellen, dass alles, was sich in der Baumstruktur befindet und eine Android.mk Datei enthält, erstellt wird.
  • m - Läuft Builds von der Spitze des Baums. Dies ist nützlich, da Sie make in Unterverzeichnissen ausführen können. Wenn Sie die Umgebungsvariable TOP festgelegt haben, wird diese verwendet. Wenn Sie dies nicht tun, wird der Baum aus dem aktuellen Verzeichnis nachgeschlagen und versucht, den oberen Rand des Baums zu finden. Sie können entweder den gesamten Quellcodebaum erstellen, indem Sie m ohne Argumente ausführen, oder bestimmte Ziele erstellen, indem Sie deren Namen angeben.
  • mma - Erstellt alle Module im aktuellen Verzeichnis und ihre Abhängigkeiten.
  • mmma - mmma alle Module in den bereitgestellten Verzeichnissen und ihre Abhängigkeiten.
  • croot - cd an die Spitze des Baumes.
  • clean - m clean löscht alle Ausgabe- und Zwischendateien für diese Konfiguration. Dies ist das gleiche wie rm -rf out/ .

Führen Sie m help , m help zu sehen, welche anderen Pseudotargets m bietet.

Build ausführen

Sie können Ihren Build entweder auf einem Emulator ausführen oder auf einem Gerät flashen. Da Sie Ihr Build-Ziel bereits zum lunch , ist es unwahrscheinlich, dass es auf einem anderen Ziel ausgeführt wird, als es erstellt wurde.

Blinkt mit Fastboot

Verwenden Sie zum fastboot eines Geräts fastboot , das nach einem erfolgreichen Build in Ihrem Pfad enthalten sein sollte. Anweisungen finden Sie unter Flashen eines Geräts .

Emulieren eines Android-Geräts

Der Emulator wird vom Erstellungsprozess automatisch zu Ihrem Pfad hinzugefügt. Geben Sie Folgendes ein, um den Emulator auszuführen:

emulator

Fehlerbehebung bei häufigen Buildfehlern

Falsche Java-Version

Wenn Sie versuchen, eine Version von Android zu erstellen, die nicht mit Ihrer Java-Version übereinstimmt make brechen Sie make Vorgang mit der folgenden Meldung ab:

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

Hier sind die wahrscheinlichen Ursachen und Lösungen:

Python Version 3

Repo basiert auf bestimmten Funktionen von Python 2.x und ist nicht mit Python 3 kompatibel. Um Repo zu verwenden, installieren Sie Python 2.x:

apt-get install python

Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung

Wenn Sie unter macOS auf einem HFS-Dateisystem aufbauen, kann ein Fehler auftreten, z.

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

Befolgen Sie die Anweisungen unter Erstellen eines Disk-Images mit Groß- und Kleinschreibung .

Keine USB-Berechtigung

Auf den meisten Linux-Systemen können nicht privilegierte Benutzer standardmäßig nicht auf USB-Anschlüsse zugreifen. Wenn der Fehler "Berechtigung verweigert" angezeigt wird, befolgen Sie die Anweisungen unter Konfigurieren des USB-Zugriffs .

Wenn ADB bereits ausgeführt wurde und nach dem Einrichten dieser Regeln keine Verbindung zum Gerät herstellen kann, können Sie es mit dem adb kill-server . Dieser Befehl veranlasst ADB, mit der neuen Konfiguration neu zu starten.