Du kannst dabei helfen, das am häufigsten installierte Betriebssystem zu entwickeln der Erde. Ja, du bist hier, um Android zu werden Platform Engineer.
Der Weg ist zwar herausfordernd, aber das Android-Team bemüht sich, ihn mit jedem Release zu vereinfachen. Außerdem führt das Team täglich Verbesserungen durch direkte Arbeit am Android Open Source Project (AOSP).
Also lehnen Sie sich zurück, starten Sie ein Terminal und lassen Sie uns Geschichte schreiben.
Ziele
Dieses Codelab verfolgt zwei Ziele:
- Um Ihnen einen kleinen Vorgeschmack auf den Workflow für Entwickler zu geben z. B. für Android-Entwickler, die an der Plattform (dem Betriebssystem) arbeiten.
- Wir möchten Sie bitten, Feedback zu den Android-Tools, zur Dokumentation und zum Entwicklerworkflow zu geben.
Voraussetzungen
Die Liste der Anforderungen für dieses Codelab leitet sich von den Anforderungen an die allgemeine Plattformentwicklung (AOSP). Für dieses Codelab müssen Sie Folgendes einrichten:
- Physische Linux-Workstation, die alle öffentlichen Anforderungen erfüllt.
- Repository und Git-Konfiguration, die zum Bearbeiten der Android-Codebasis erforderlich sind.
Umgebung
In der Regel erfolgt die Erstellung und Entwicklung direkt auf der Workstation. Da Sie möglicherweise in verschiedenen Terminals arbeiten und viele der verwendeten Befehle terminalspezifisch sind, müssen Sie sie in jeder Terminalsitzung neu ausführen. Dazu gehören insbesondere die Befehle source build/envsetup.sh
und lunch
.
Workstation einrichten
- Installieren Sie die erforderlichen Pakete auf Ihrem .
- Installieren Sie das Repository und rufen Sie Anmeldedaten ab, während Sie sich noch in einem Terminal befinden. zu allen Git-Repositories hinzufügen.
Code initialisieren und synchronisieren
Wechseln Sie zu Ihrem Basisverzeichnis:
cd ~
Erstellen Sie darin ein lokales Arbeitsunterverzeichnis:
mkdir aosp
Wechseln Sie in das Verzeichnis:
cd aosp
Initialisieren Sie den Hauptzweig des AOSP-Repository-Quellcodes (Standardeinstellung):
repo init -u https://android.googlesource.com/platform/manifest
Geben Sie Ihre Git-Anmeldedaten (Name, E-Mail-Adresse) ein oder akzeptieren Sie sie.
Quellcode synchronisieren:
repo sync -j8
Die Erstsynchronisierung kann eine Stunde oder länger dauern.
Jeder Repository-Bezahlvorgang wird durch eine Manifestdatei dargestellt. Es ist zulässig, mehrere Repository-Checkouts gleichzeitig zu haben, solange sie sich in verschiedenen Verzeichnissen befinden. Beachten Sie jedoch, dass jede Absicherung und Erstellung etwa 300 GB Speicherplatz belegt (und dieser Wert steigt). Beschränken Sie sich daher auf zwei Repository-Absicherungen oder ergänzen Sie Ihr System mit einem sekundären Laufwerk.
Code erstellen
Wenn Sie Android erstellen möchten, müssen Sie mit dem Befehl lunch
einen Ziel-Gerätetyp auswählen. Ein Ziel ist eine Gerätevariante, z. B. ein bestimmtes Modell oder ein bestimmter Formfaktor.
Mit dem Geräteziel „aosp_cf_x86_64_phone-userdebug
“ können Sie
um das virtuelle Android-Gerät Cuttlefish
ohne physisches Gerät testen.
Wenn du stattdessen ein physisches Gerät entwickeln und aktualisieren möchtest, wähle ein anderes Ziel aus und folge die Anleitung für Flash-Geräte.
Richten Sie Ihre Umgebung für das Erstellen von Android-Geräten ein, indem Sie den folgenden Befehl im Stammverzeichnis Ihrer Quellcode-Checkout-Datei ausführen:
source build/envsetup.sh
Übergeben Sie das Build-Ziel wie folgt an den Lunch-Befehl:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Erstellen Sie den Code an einer beliebigen Stelle im Bezahlvorgang mit:
m
Der erste Build wird voraussichtlich Stunden dauern. Nachfolgende Builds werden erheblich Zeit sparen.
Cuttlefish starten
Cuttlefish ist der Android-Emulator zum Testen Ihrer Builds.
Wenn Sie Cuttlefish noch nie installiert haben, müssen Sie die erforderlichen Sepien-Abhängigkeiten. Führen Sie in einem Terminalfenster die folgenden Befehle aus, um die Debian-Pakete des Hosts herunterzuladen, zu erstellen und zu installieren:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
Der Neustart löst die Installation weiterer Kernelmodule aus und wendet
udev
an Regeln.Sepien starten:
launch_cvd --daemon
Stellen Sie eine Verbindung zum Cuttlefish-Gerät her, indem Sie in Ihrem Webbrowser
https://localhost:8443
aufrufen. Sie werden mit einem Videostream der Android-basierten das Sie gerade entwickelt haben.
Änderungen vornehmen
Aktualisieren Sie den Quellcode anhand dieser Änderungsliste.
Gehen Sie im Stammverzeichnis des Bezahlvorgangs (Verzeichnis
aosp/
) zumframeworks/native
-Git-Projekt:cd frameworks/native
Starten Sie ein temporäres Projekt mit diesem Befehl:
repo start <some-name> .
Bearbeiten Sie
SurfaceFlinger.cpp
so, dass die Aktualisierungen aus der Änderungsliste an der folgende Position:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Suchen Sie nach dieser Zeile:
void SurfaceFlinger::updateColorMatrixLocked() {
Fügen Sie diese beiden Zeilen am Anfang von updateColorMatrixLocked() hinzu:
mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f});
Erstellen Sie den Code:
m
Aktualisieren Sie den Build auf dem Gerät:
adb root
adb remount
adb sync
adb reboot
Überprüfen Sie, ob auf dem ausgewählten Gerät eine Farbänderung ähnlich der auf dem Bildschirm zu sehen ist. in Abbildung 1.
Abbildung 1: Bildschirmdarstellung nach erfolgreicher Farbänderung
Code testen
In diesem Teil des Codelabs wird ein Beispieltest verwendet, der sich im Quellbaum befindet. und schlägt fehl. Dazu wird Atest verwendet, um den Test lokal auszuführen und den Code zu testen.
So verwenden Sie den Test:
Führen Sie Folgendes aus:
atest DevCodelabTest
Der Test schlägt fehl. Prüfen Sie den Stack-Trace des fehlgeschlagenen Tests:
STACKTRACE: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:87) at org.junit.Assert.assertTrue(Assert.java:42) at org.junit.Assert.assertTrue(Assert.java:53) at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)
Dann sieh dir das hier an
platform_testing/tests/example/devcodelab
Um die zu bearbeitende Datei aufzurufen, ersetzen Sie in
android.test.example.devcodelab.DevCodelabTest
den Namen des Tests durch/
. Sie erhalten dann Folgendes:src/android/test/example/devcodelab/DevCodelabTest.java
Bearbeiten
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
zum Ersetzen
Assert.assertTrue(false)
mit
Assert.assertTrue(true)
Führen Sie den Test noch einmal aus, um zu prüfen, ob das Problem behoben wurde:
atest DevCodelabTest
Code zur Überprüfung hochladen
Repo vereinfacht die Nutzung von Git, indem Befehle wie git clone
bündelt werden
in zahlreichen Git-Repositories (oder Projekten) gleichzeitig ausgeführt werden.
Unter Tools zur Versionskontrolle finden Sie eine Übersicht über Git und Repo mit Links zur vollständigen Dokumentation zur Arbeit mit Android-Quellcode. Eine vollständige Liste der Git-Projekte und der einzelnen Projekte (Pfade) für die mit den einzelnen Projekten verknüpften Branches finden Sie im AOSP-Repository.
Für die Codeüberprüfung Ihrer Projekte in Git verwenden Sie das Gerrit webbasierten System zur Codeüberprüfung.
Angenommen, Sie haben die Änderungen im Projekt
frameworks/native
vorgenommen, führen Sie die folgenden Befehle aus, um sie hochzuladen:cd frameworks/native
repo start codelab .
git add .
git commit
Geben Sie für die Commit-Nachricht Folgendes ein:
Android codelab change Test: manual atest
Laden Sie die Änderung hoch:
repo upload
Ist dies erfolgreich, sehen Sie eine Nachricht wie diese:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
Änderung in Gerrit ansehen
Rufen Sie den im Terminal gedruckten Link auf, der in etwa so aussieht:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Damit ist das Einstiegs-Codelab für die Entwicklung auf der Android-Plattform abgeschlossen. Weitere Informationen finden Sie unter Patches senden finden Sie weitere Informationen zu den nächsten Schritten. Ausführliche Informationen zur Entwicklung von Android finden Sie in den diese Website.
Änderung rückgängig machen
Normalerweise reichen Sie Ihre Änderung nach dem Testen, der Überprüfung und Genehmigung in Gerrit ein und führen sie in das Repository ein.
Setzen Sie für dieses Codelab Ihre Änderungsliste zurück, indem Sie auf Abandon in Gerrit aus.
Verwerfen Sie dann den zugehörigen temporären Branch im Projektverzeichnis frameworks/native
(oder in seinen Unterverzeichnissen):
repo abandon codelab .
Denken Sie auch daran, die Änderungen an der Testdatei rückgängig zu machen. Da Sie nicht
repo start
, git commit
und repo upload
die Änderung haben, können Sie die
-Datei selbst. Angenommen, Sie befinden sich in der aosp/platform_testing directory
, können Sie die Datei so zurücksetzen:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
Damit sind Sie fertig. Gut gemacht!
Hilfe
Wenn in diesem Codelab Fehler auftreten, melde sie mithilfe des Problemverfolgung unten auf jeder Seite. Senden Sie Fragen an die Gruppe android-building.