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. Und das Team erreicht jeden Tag Verbesserungen durch direkte im Android Open Source Project (AOSP) tätig.
Lehnen Sie sich also zurück, starten Sie ein Terminal und lassen Sie uns Geschichte schreiben.
Ziele
Dieses Codelab verfolgt zwei Ziele:
- Sie erhalten einen kleinen Einblick in den Entwickler-Workflow für Android-Entwickler, die an der Plattform (dem Betriebssystem) arbeiten.
- Ermutigen Sie Sie, Feedback zu geben. zu den Tools, der Dokumentation und dem Entwickler-Workflow von Android.
Voraussetzungen
Die Liste der Anforderungen für dieses Codelab leitet sich von den Anforderungen an die allgemeine Plattformentwicklung (AOSP). Für dieses Codelab richten Sie Folgendes ein:
- Physische Linux-Workstation, die alle öffentlichen Anforderungen erfüllt.
- Repository und die Git-Konfiguration, die zum Bearbeiten erforderlich sind mit der Android-Codebasis.
Umgebung
In der Regel erfolgt die Erstellung und Entwicklung direkt auf der Workstation. Da Sie möglicherweise
die in verschiedenen Terminals funktionieren,
und viele der verwendeten Befehle sind Terminal-spezifisch.
müssen Sie sie in jeder Terminalsitzung
noch einmal ausführen. Genauer gesagt:
Dazu gehören 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-Repositorys (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 erste Synchronisierung kann eine Stunde oder länger dauern.
Jeder Repository-Bezahlvorgang wird durch eine Manifestdatei dargestellt. Es ist zulässig, mehrere Repository-Bezahlvorgänge gleichzeitig zu haben, solange sie in verschiedenen Verzeichnissen vorhanden sind. Beachten Sie jedoch, dass jeder Bezahlvorgang und Build Eine Nutzung von etwa 300 GB (Tendenz steigend), beschränken Sie sich daher auf 2 Repo-Checkouts, oder das System mit einem zweiten Laufwerk erweitern.
Code erstellen
Sie müssen ein Ziel auswählen, um Android zu erstellen.
Gerätetyp, der mit dem Befehl lunch
erstellt werden soll. Ein Ziel ist eine Gerätepermutation,
z. B. ein bestimmtes Modell oder einen Formfaktor.
Mit dem Geräteziel aosp_cf_x86_64_phone-userdebug
können Sie das virtuelle Android-Gerät Cuttlefish für Tests ohne physisches Gerät erstellen.
Wenn Sie stattdessen ein physisches Gerät erstellen und aktualisieren möchten, wählen Sie ein anderes Ziel aus und folgen Sie der Anleitung zum Flashen von Geräten.
Richten Sie Ihre Umgebung für die Erstellung von Android-Geräten ein, indem Sie den folgenden Befehl aus dem Stammverzeichnis des Quellcodes aus:
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 kann mehrere Stunden dauern. Nachfolgende Builds werden erheblich Zeit sparen.
Sepien werfen
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: So können Sie die Debian-Pakete auf dem Host herunterladen, erstellen und 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
Durch den Neustart werden zusätzliche Kernelmodule installiert und
udev
-Regeln angewendet.Sepien starten:
launch_cvd --daemon
Du kannst eine Verbindung zum Sepia-Gerät herstellen, indem du
https://localhost:8443
aufrufst in Ihrem Webbrowser. Sie werden mit einem Videostream des das Sie gerade entwickelt haben.
Änderungen vornehmen
Aktualisieren Sie den Quellcode gemäß dieser Beispieländerungsliste.
Gehen Sie im Stammverzeichnis des Bezahlvorgangs (Verzeichnis
aosp/
) zumframeworks/native
-Git-Projekt:cd frameworks/native
Starten Sie mit diesem Befehl ein temporäres Projekt:
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
Prüfen Sie, ob auf dem ausgewählten Gerät eine Farbänderung ähnlich wie in Abbildung 1 angezeigt wird.
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. Dabei wird Atest für den Test lokal ausführen und den Code 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 Datei bearbeiten zu können, notieren Sie sich den Namen des Tests in
android.test.example.devcodelab.DevCodelabTest
und ersetzen Sie.
durch/
, um dieses Ergebnis zu erhalten: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 Verwendung von Git, indem Befehle wie git clone
gebündelt werden, um gleichzeitig mit mehreren Git-Repositories (oder Projekten) zu arbeiten.
Unter Source Control Tools finden Sie einen Überblick über Git und Repository mit Links zur vollständigen Dokumentation zum Arbeiten mit dem Android-Quellcode Siehe AOSP-Repository finden Sie die vollständige Liste der Git-Projekte und der einzelnen Projekte (Pfade) für Zweigen, die mit jedem Projekt verknüpft sind.
Für die Codeüberprüfung Ihrer Projekte in Git verwenden Sie das Gerrit webbasierten System zur Codeüberprüfung.
Wenn Sie im Projekt
frameworks/native
Änderungen vorgenommen haben, führen Sie folgenden Befehl aus: folgende Befehle, 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
Wenn der Vorgang erfolgreich war, wird eine Meldung wie die folgende angezeigt:
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
Deine Ä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 Start-Codelab für die Android-Plattformentwicklung abgeschlossen. Weitere Informationen zu den nächsten Schritten finden Sie unter Patches einreichen. Ausführliche Informationen zur Entwicklung von Android finden Sie auf der restlichen Website.
Änderung rückgängig machen
Normalerweise reichen Sie die Änderung nach dem Testen sowie nach Überprüfung und Genehmigung in Gerrit und führen Sie sie im Repository zusammen.
Setzen Sie für dieses Codelab Ihre Änderungsliste zurück, indem Sie auf Abandon in Gerrit aus.
Verwerfen Sie dann den verknüpften temporären Zweig im Projekt frameworks/native
(oder dessen Unterverzeichnisse):
repo abandon codelab .
Vergessen Sie nicht, die Änderungen, die Sie an der Testdatei vorgenommen haben, 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 Android-Entwicklung Gruppe.