Android bauen

Befolgen Sie diese Anweisungen, um mit der Erstellung von Android zu beginnen.

Umgebung einrichten

Initialisieren Sie die Umgebung mit dem envsetup.sh Skript:

source build/envsetup.sh

oder

. build/envsetup.sh

Siehe das Skript auf Plattform / build / envsetup.sh für Beschreibungen verwandter Befehle, einschließlich Mittagessen zur Auswahl Geräteziele und Tapas für den Aufbau von entbündelten - Anwendungen, wie zum Beispiel der Referenz TV App .

Sie müssen diesen Befehl nach jeder Neuausstellung repo sync alle Änderungen an diesem Skript zu holen. Beachten Sie, dass zu ersetzen source mit . (ein einzelner Punkt) spart einige Zeichen, und die Kurzform wird häufiger in der Dokumentation verwendet.

Die envsetup.sh Skript importiert mehrere Befehle , die Sie zur Arbeit mit dem Android - Quellcode zu ermöglichen, einschließlich der in dieser Übung verwendeten Befehle.

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

hmm

Ein Ziel auswählen

Mittagessen

Wählen Sie , welche mit bauen Ziel lunch . lunch product_name - build_variant wählt product_name als das Produkt zu bauen, und build_variant als Variante zu bauen, und speichert diese Auswahl in der Umgebung von nachfolgenden Aufrufen von zu lesenden m und anderen ähnlichen Befehlen.

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 das gesamte Debugging aktiviert ist:

lunch aosp_arm-eng

Wenn ohne Argumente laufen, lunch fordert Sie ein Ziel aus dem Menü zu wählen. Siehe , eine Vorrichtung zu bauen Auswahl für die Build - Konfigurationen aller vorhandenen Geräte.

Alle Build - Ziele in Form BUILD-BUILDTYPE , wo BUILD ein Codename ist auf die jeweilige Merkmalskombination bezieht. BUILDTYPE ist eines der folgenden.

Buildtyp Verwenden
Benutzer Beschränkter Zugang; für die Produktion geeignet
Benutzerdebug Wie Benutzer, aber mit Root-Zugriff und Debug-Fähigkeit; bevorzugt zum Debuggen
ger 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 gegen das Sicherheitsmodell der Plattform verstößt. Dadurch eignet sich der Userdebug-Build gut für Benutzertests mit größeren Diagnosemöglichkeiten. Wenn es mit dem Userdebug Build entwickeln, die folgen Userdebug Richtlinien .

Der eng Build priorisiert die Engineering-Produktivität für Ingenieure, die auf der Plattform arbeiten. Der eng Build deaktiviert verschiedene Optimierungen, die verwendet werden, um eine gute Benutzererfahrung zu bieten. Andernfalls weist der eng-Build ein ähnliches Verhalten wie die Benutzer- und userdebug-Builds auf, sodass Geräteentwickler sehen können, wie sich der Code in diesen Umgebungen verhält.

Weitere Informationen über die für den Aufbau und Betrieb auf tatsächliche Hardware finden Flashing Geräte .

Tapas

Die tapas - Befehl konfiguriert den Bau von entbündelten Anwendungen. Es wählt einzelne Apps aus, die vom Android-Build-System erstellt werden sollen. Im Gegensatz zu lunch , tapas verlangt nicht das Gebäude von Bildern für ein Gerät.

Führen Sie tapas help - tapas help für weitere Informationen über den Befehl.

Erstellen des Codes

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

Build alles mit m . m kann parallel Aufgaben mit einem Griff -jN Argumente. Wenn Sie keinen liefern -j Argument, wählt das Build - System automatisch eine parallele Aufgabe rechnen , dass er denkt , optimal für Ihr System ist.

m

Wie oben erläutert, können Sie durch die Auflistung ihrer Namen in Ihren spezifischen Module anstelle der vollständigen Gerätebild bauen m Kommandozeile. Darüber hinaus m bietet einige pseudotargets für besondere Zwecke. Einige Beispiele sind:

  • droid - m droid ist die normale Build. Dieses Ziel ist hier, weil das Standardziel einen Namen erfordert.
  • all - m all alles baut , dass m droid der Fall ist, und alles, was nicht das hat droid - Tag. Der Build - Server läuft dies sicher , dass alles zu machen , die in dem Baum und haben eine Android.mk Datei aufbaut.
  • m - Läuft baut von der Spitze des Baumes. Dies ist nützlich , weil Sie ausführen können , make aus Verzeichnissen. Wenn Sie die haben TOP - Umgebungsvariable gesetzt, verwendet es das. Wenn Sie dies nicht tun, wird der Baum im aktuellen Verzeichnis nachgeschlagen und versucht, die Spitze des Baums zu finden. Sie können entweder den gesamten Quellcode Baum bauen , indem Sie m ohne Argumente oder Build - spezifische Ziele durch ihre Namen angeben.
  • mma - Baut alle Module im aktuellen Verzeichnis, und die Abhängigkeiten.
  • mmma - Baut alle Module in den im Lieferumfang enthaltenen Verzeichnisse und deren Abhängigkeiten.
  • croot - cd an die Spitze des Baumes.
  • clean - m clean Löschungen des gesamten Ausgabe und Zwischendateien für diese Konfiguration. Dies ist die gleiche wie rm -rf out/ .

Führen m help , um zu sehen , was andere pseudotargets m bietet.

Ausführen des Builds

Sie können Ihren Build entweder auf einem Emulator ausführen oder auf einem Gerät flashen. Da Sie bereits Ihre Build - Ziel mit ausgewählt haben lunch , dann ist es unwahrscheinlich , dass auf einem anderen Ziel laufen , als es für gebaut wurde.

Flashen mit Fastboot

Um ein Gerät zu blinken, verwendet fastboot , die auf Ihrem Weg nach einem erfolgreichen Build aufgenommen werden sollten. Siehe ein Gerät blinkend für Anweisungen.

Emulieren eines Android-Geräts

Der Emulator wird Ihrem Pfad automatisch durch den Build-Prozess hinzugefügt. Geben Sie Folgendes ein, um den Emulator auszuführen:

emulator

Build-Fingerabdrücke verstehen

Um Probleme im Zusammenhang mit einem bestimmten Android-Build zu verfolgen und zu melden, ist es wichtig, den Build-Fingerabdruck zu verstehen. Der Build-Fingerabdruck ist eine eindeutige, für Menschen lesbare Zeichenfolge mit Herstellerinformationen, die für jeden Build ausgegeben werden. Siehe die FINGERABDRUCK Beschreibung in dem Build - Parameter Abschnitt der Android Compatibility Definition Document (CDD) für die genaue Syntax.

Der Build-Fingerabdruck repräsentiert eine bestimmte Android-Implementierung und -Revision. Dieser eindeutige Schlüssel ermöglicht es App-Entwicklern und anderen, Probleme mit bestimmten Firmware-Versionen zu melden. Siehe Bericht Bugs für den Android - Ausgabe-Berichterstattungsprozess.

Ein Build-Fingerabdruck kapselt alle Details der Android-Implementierung:

  • APIs: Android und native sowie Soft-API-Verhalten
  • Core-API und einiges Verhalten der System-UI
  • Kompatibilitäts- und Sicherheitsanforderungen in der CDD . definiert
  • Produktspezifikationen und die Uses-Funktion Einstellung von Anwendungen zu Zielgeräten verwendet Treffen erwarteten Anforderungen
  • Implementierungen von Hard- und Softwarekomponenten

Siehe die CDD für komplette Details und Hinzufügen ein neues Geräts für Anweisungen auf ein völlig neues Android - Gerät zu schaffen.

Fehlerbehebung bei häufigen Build-Fehlern

Falsche Java-Version

Wenn Sie versuchen , eine Version von Android zu bauen , die mit Ihrer Version von Java, inkonsistent ist make Abbrüche mit einer Nachricht wie zum 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
************************************************************

Hier sind die wahrscheinlichen Ursachen und Lösungen:

  • Wird das korrekte JDK zu installieren , wie in den angegebenen JDK Anforderungen . Stellen Sie sicher , haben Sie die Schritte folgen in der Umgebung Einrichten und Auswählen eines Ziel .
  • 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.

Keine USB-Berechtigung

Standardmäßig können unprivilegierte Benutzer auf den meisten Linux-Systemen nicht auf USB-Ports zugreifen. Wenn Sie eine Berechtigung verweigert Fehler angezeigt wird , folgen Sie den Anweisungen in den USB - Zugriff konfigurieren .

Wenn ADB bereits ausgeführt wird und kann nicht mit dem Gerät verbinden , nachdem diese Regeln einrichten bekommen, können Sie es mit töten adb kill-server . Dieser Befehl bewirkt, dass ADB mit der neuen Konfiguration neu gestartet wird.