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 Mittagessen 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 häufiger in der Dokumentation 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
Mittagessen
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 Auswahl 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 |
---|---|
Nutzer | 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 auf 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 userdebug-Build, sodass Geräteentwickler sehen können, wie sich der Code in diesen Umgebungen verhält.
Weitere Informationen zum Erstellen und Ausführen von Hardware finden Sie unter Flashen von Geräten .
Tapas
Der Befehl tapas
konfiguriert den Build entbündelter Apps. Es werden einzelne Apps ausgewählt, die vom Android-Build-System erstellt werden sollen. Im Gegensatz zum lunch
fordert tapas
nicht das Erstellen von Bildern für ein Gerät.
Führen Sie die tapas help
um weitere Informationen zum Befehl zu erhalten.
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, wasm droid
tut, plus alles, was nicht dasdroid
tag hat. Der Build-Server führt dies aus, um sicherzustellen, dass alles, was sich in der Baumstruktur befindet und eineAndroid.mk
Datei enthält, erstellt wird. -
m
- Läuft Builds von der Spitze des Baums. Dies ist nützlich, da Siemake
in Unterverzeichnissen ausführen können. Wenn Sie die UmgebungsvariableTOP
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 Siem
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 wierm -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:
- Fehler beim Installieren des richtigen JDK gemäß den JDK-Anforderungen . Stellen Sie sicher, dass Sie die Schritte unter Einrichten der Umgebung und Auswählen eines Ziels ausgeführt haben .
- Ein anderes zuvor installiertes JDK wird in Ihrem Pfad angezeigt. Stellen Sie das richtige JDK an den Anfang Ihres Pfads oder entfernen Sie das problematische JDK.
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.