Sie können helfen, das am weitesten verbreitete Betriebssystem in der Geschichte der Erde zu entwickeln. Ja, Sie sind hier, um sich auf den Weg zum Android-Plattformingenieur zu machen.
Obwohl der Weg herausfordernd ist, bemühen wir uns, Ihre Reise bei jeder Veröffentlichung zu vereinfachen. Und wir verbessern uns jeden Tag durch direkte Arbeit im Android Open Source Project (AOSP).
Lehnen Sie sich zurück, starten Sie ein Terminal und schreiben Sie Geschichte.
Tore
Die Mission dieses Codelab ist zweifach:
- Dieses Codelab gibt Ihnen einen kleinen Einblick in den Entwickler-Workflow für Android-Ingenieure, die an der Plattform (Betriebssystem) arbeiten.
- Dieses Codelab ist eine zwingende Funktion, mit der Sie Feedback zu den Tools, der Dokumentation und dem Entwickler-Workflow von Android geben können, wenn Sie von vorne beginnen.
Voraussetzungen
Hier finden Sie die vollständige Liste der Anforderungen für dieses Codelab, die von denen für die allgemeine Plattformentwicklung ( AOSP ) abgeleitet wurden.
Um dieses Codelab zu verwenden, müssen Sie Folgendes einrichten:
- Physische Linux-Workstation, die alle öffentlichen Anforderungen erfüllt .
- Repo und die Git-Konfiguration, die zum Bearbeiten der Android-Codebasis erforderlich sind.
Umgebung
In der Regel erstellen und entwickeln Benutzer 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 erneut ausführen. Im Einzelnen sind dies die source build/envsetup.sh
und lunch
Befehle.
Workstation einrichten
- Installieren Sie die erforderlichen Pakete auf der Workstation.
- Installieren Sie Repo, während Sie sich noch in einem Terminal befinden, und erhalten Sie Anmeldeinformationen für alle Git-Repositorys.
Initialisieren und synchronisieren Sie den Code
Navigieren Sie in Ihr Home-Verzeichnis:
cd ~
Erstellen Sie darin ein lokales Arbeitsverzeichnis:
mkdir aosp
Navigieren Sie in das Verzeichnis:
cd aosp
Initialisieren Sie den AOSP-Repository-Quellcode-Hauptzweig (Standardeinstellung):
repo init -u https://android.googlesource.com/platform/manifest
Geben Sie Ihre Git-Anmeldeinformationen (Name, E-Mail-Adresse) ein oder akzeptieren Sie sie.
Synchronisieren Sie den Quellcode:
repo sync -j16
Die ersten Synchronisierungen können eine Stunde oder länger dauern. Weitere Informationen finden Sie in den Anweisungen zum Herunterladen, während Sie warten.
Jede Repo-Prüfung wird durch eine Manifestdatei dargestellt . Sie können mehr als eine Repo-Kaufabwicklung gleichzeitig durchführen, sofern diese in unterschiedlichen Verzeichnissen vorhanden sind. Beachten Sie jedoch, dass jede Kasse und jeder Build ungefähr 300 GB beträgt und wächst. Beschränken Sie sich also auf zwei oder erweitern Sie Ihr System mit einem sekundären Laufwerk.
Tipp: Um Speicherplatz freizugeben, löschen Sie ein Zweigverzeichnis und beginnen Sie erneut mit der Verzeichniserstellung:
rm -rf aosp2
Erstellen Sie den Code
Um Android zu erstellen, müssen Sie einen Zielgerätetyp auswählen, der mit dem Befehl lunch
. Ziele sind Gerätepermutationen, z. B. ein bestimmtes Modell oder ein bestimmter Formfaktor.
Mit dem unten aosp_cf_x86_64_phone-userdebug
können Sie das virtuelle Android-Gerät Cuttlefish zum Testen ohne physisches Gerät erstellen.
Um stattdessen ein physisches Gerät zu erstellen und zu aktualisieren, wählen Sie ein anderes Ziel und befolgen Sie die Anweisungen zum Flashen von Geräten .
Richten Sie Ihre Umgebung zum Erstellen von Android-Geräten ein, indem Sie den folgenden Befehl im Stammverzeichnis Ihrer Quellcode-Prüfung ausführen:
source build/envsetup.sh
Übergeben Sie das Build-Ziel wie folgt an den Befehl zum Mittagessen:
lunch aosp_cf_x86_64_phone-userdebug
Erstellen Sie den Code von überall in Ihrer Kasse mit:
m
Erwarten Sie, dass der erste Build Stunden dauert. Nachfolgende Builds benötigen erheblich weniger Zeit.
Erstellen Sie eine Acloud-Instanz
Acloud ist ein Befehlszeilentool in AOSP, das Benutzer beim Erstellen virtueller Android-Geräte unterstützt, in diesem Fall Cuttlefish.
Wenn Sie sich in derselben Terminalsitzung befinden, in der der Code erstellt wurde , fahren Sie fort. Führen Sie envsetup.sh
Skript envsetup.sh
und denselben dort zuerst verwendeten Befehl zum Mittagessen erneut aus. Dann:
Erstellen Sie eine lokale Acloud-Instanz mit:
acloud create --local-image --local-instance
Akzeptieren Sie Aktualisierungen der erforderlichen Pakete.
Wenn Sie dazu aufgefordert werden, starten Sie Ihre Workstation neu, damit alle Änderungen wirksam werden.
Wählen Sie das Tintenfischgerät.
Sie sollten mit einer VNC-Sitzung begrüßt werden, die ein Android-Gerät enthält!
Sie können mit Maus und Tastatur mit dem virtuellen Gerät auf Ihrer Workstation interagieren. Sie können die Aktivität auch in den Protokollen verfolgen, während Sie Ihr Gerät mit dem Befehl logcat
Android Debug Bridge (adb) logcat
:
adb logcat
Nehmen Sie eine Änderung vor
Aktualisieren Sie den Quellcode nach diesem Beispiel Änderungsliste .
Navigieren Sie vom Stammverzeichnis Ihrer Kasse (
aosp/
directory) zumframeworks/native
Git-Projekt:cd frameworks/native
Starten Sie ein temporäres Projekt mit:
repo start <some-name> .
Bearbeiten Sie
SurfaceFlinger.cpp
, um die Aktualisierungen aus der Änderungsliste an der folgenden Stelle aufzunehmen:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Erstellen Sie den Code:
m
Aktualisieren Sie den Build auf dem Gerät:
adb root adb remount adb sync adb reboot acloud reconnect
Sie sollten eine Farbänderung auf dem Gerät sehen.
Testen Sie Ihren Code
Während dieses Teils des Codelabs werden wir einen Beispieltest durchlaufen, der sich im Quellbaum befindet und bereits fehlschlägt. Um den Test lokal auszuführen , verwenden wir Atest , um den Code zu testen.
So verwenden Sie den Test:
Lauf:
atest DevCodelabTest
Der Test schlägt fehl. Jetzt lass es uns reparieren! Suchen Sie den Quellcode des fehlgeschlagenen Tests:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Dann schau nach innen:
platform_testing/tests/example/devcodelab
Um die Datei zu bearbeiten, nehmen Sie den Namen des Tests und ersetzen Sie den
.
mit/
, wie so:android.test.example.devcodelab.DevCodelabTest
Wird:
src/android/test/example/devcodelab/DevCodelabTest.java
So bearbeiten:
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
Ersetzen:
Assert.assertTrue(false)
Mit:
Assert.assertTrue(true)
Führen Sie den Test erneut aus, um zu überprüfen, ob Sie den Test behoben haben:
atest DevCodelabTest
Laden Sie Ihren Code zur Überprüfung hoch
Repo vereinfacht die Verwendung von Git, indem Befehle wie der git clone
, um in mehreren Git-Repositorys (oder Projekten) gleichzeitig zu arbeiten.
Unter Quellcodeverwaltungstools finden Sie eine Übersicht über Git und Repo mit Links zur vollständigen Dokumentation zum Arbeiten mit Android-Quellcode. Im AOSP-Repository finden Sie die vollständige Liste der Git-Projekte und die einzelnen Projekte (Pfade) für die mit jedem Projekt verknüpften Zweige.
Sie verwenden das webbasierte Gerrit- Codeüberprüfungssystem von Gerrit für Projekte in Git.
Angenommen, Sie haben Ihre Änderungen im
frameworks/native
Projekt 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 Ihre Commit-Nachricht Folgendes ein:
Android codelab change Test: manual atest
Laden Sie Ihr Wechselgeld hoch:
repo upload
Wenn Sie erfolgreich sind, wird eine Meldung angezeigt, die Folgendes ähnelt:
Upload project frameworks/native/ to remote branch master:
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/master
Zeigen Sie Ihre Änderung in Gerrit an
Gehen Sie zu dem Link im Terminal, der wie folgt aussieht:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Damit ist das Starter-Codelab für die Entwicklung der Android-Plattform abgeschlossen. Ausführliche Informationen zum Entwickeln von Android finden Sie unter Senden von Patches für die nächsten Schritte und im Rest dieser Website.
Setzen Sie Ihre Änderung zurück
Normalerweise würden Sie nach dem Testen und der Überprüfung / Genehmigung Ihre Änderung in Gerrit einreichen und sie im Repository zusammenführen.
Stattdessen für die Zwecke des Codelab, kehren Ihre Änderungsliste von in Gerrit Abandon klicken.
Verlassen Sie dann den zugehörigen temporären Zweig im Frameworks / native Projektverzeichnis (oder seinen Subs):
repo abandon codelab .
Denken Sie auch daran, die Änderungen an der Testdatei zurückzusetzen. Da wir die Änderung nicht erneut repo start
, git commit
und repo upload
haben, können wir lediglich die Datei selbst wie aosp/platform_testing directory
zurücksetzen (vorausgesetzt, Sie befinden sich im aosp/platform_testing directory
):
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
An diesem Punkt sind Sie fertig! Gute Arbeit!
Hilfe erhalten
Wenn während dieses Codelabs Fehler auftreten, melden Sie diese bitte über den Link zum Site-Feedback unten auf einer beliebigen Seite. Senden Sie Fragen an die Android-Building- Gruppe.