Android-Entwickler-Codelab

Sie können mithelfen, das am häufigsten installierte Betriebssystem in der Geschichte der Erde zu entwickeln. Ja, Sie sind hier, um sich auf den Weg zu einem Android-Plattform-Ingenieur zu machen.

Obwohl der Weg eine Herausforderung darstellt, ist das Android-Team bestrebt, Ihre Reise mit jeder Veröffentlichung zu vereinfachen. Und das Team verbessert täglich durch direkte Arbeit im Android Open Source Project (AOSP).

Lehnen Sie sich also zurück, starten Sie ein Terminal und lassen Sie uns Geschichte schreiben.

Tore

Die Mission dieses Codelabs ist zweifach:

  1. Um Ihnen einen kleinen Vorgeschmack auf den Entwickler-Workflow für Android-Ingenieure zu geben, die an der Plattform (dem Betriebssystem) arbeiten.
  2. Ermutigen Sie bieten Feedback rund um Android-Tools, Dokumentation und den Entwickler - Workflow.

Voraussetzungen

Die Liste der Anforderungen für diese Codelab sind von denen , für die allgemeine Plattform (abgeleitet AOSP ) Entwicklung. Um dieses Codelab zu absolvieren, richten Sie Folgendes ein:

Umgebung

Normalerweise bauen 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.

Arbeitsplatz einrichten

  1. Installieren Sie die notwendigen Pakete auf Ihrer Workstation.
  2. Während noch in einem Terminal installieren Repo und Anmeldeinformationen gewinnen alle Git - Repositories.

Code initialisieren und synchronisieren

  1. Navigieren Sie in Ihr Home-Verzeichnis:

    cd ~
    
  2. Erstellen Sie darin ein lokales Arbeitsunterverzeichnis:

    mkdir aosp
    
  3. Navigieren Sie in das Verzeichnis:

    cd aosp
    
  4. Initialisieren Sie den Quellcode-Master-Zweig des AOSP-Repositorys (Standard):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Geben Sie Ihre Git-Anmeldeinformationen (Name, E-Mail-Adresse) ein oder akzeptieren Sie sie.

  6. Synchronisiere den Quellcode:

    repo sync -j8
    

Die ersten Synchronisierungen können eine Stunde oder länger dauern. Sehen Sie sich die Download Anweisungen für bezogene Details , während Sie warten.

Jede Repo - Kasse wird dargestellt durch eine Manifestdatei . Es ist zulässig, mehr als 1 Repo-Checkout gleichzeitig zu haben, solange sie in unterschiedlichen Verzeichnissen vorhanden sind. Beachten Sie jedoch, dass jeder Checkout und Build eine Nutzung von ungefähr 300 GB ausmacht (und wächst). Beschränken Sie sich also entweder auf 2 Repo-Checkouts oder erweitern Sie Ihr System mit einem sekundären Laufwerk.

Code erstellen

Bauen Android, müssen Sie einen auswählen Zielgerätetyp mit dem Aufbau lunch Befehl. Ein Ziel ist eine Gerätepermutation, z. B. ein bestimmtes Modell oder Formfaktor.

Das Gerät Ziel auch weiter unten, aosp_cf_x86_64_phone-userdebug , ermöglicht es Ihnen , die bauen Tintenfische zum Testen ohne ein physisches Gerät virtuellen Android - Gerät.

Zu bauen und zu aktualisieren , statt ein physisches Gerät, wählen Sie ein anderes Ziel und folgen Sie den Anweisungen für blinkende Geräte .

  1. Richten Sie Ihre Umgebung zum Erstellen von Android-Geräten ein, indem Sie den folgenden Befehl im Stammverzeichnis Ihres Quellcode-Checkouts ausführen:

    source build/envsetup.sh
    
  2. Übergeben Sie das Build-Ziel wie folgt an den Befehl lunch:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Bauen Sie den Code von überall in Ihrer Kasse mit:

    m
    

Erwarten Sie, dass der erste Build Stunden dauern wird. Nachfolgende Builds nehmen deutlich weniger Zeit in Anspruch.

Erstellen Sie eine Acloud-Instanz

Acloud ist ein Kommandozeilen - Tool in AOSP die Benutzern hilft bei der virtuellen Android - Geräte zu schaffen, in diesem Fall Tintenfische.

Wenn Sie in der gleichen Terminalsitzung verwendet sind , um den Code zu bauen , gehen. Ansonsten wiederholen Sie die envsetup.sh Skript und das gleiche lunch Befehl Sie es zum ersten Mal verwendet. Dann

  1. Erstellen Sie eine lokale Acloud-Instanz mit:

    acloud create --local-image --local-instance
    
  2. Akzeptieren Sie Updates für erforderliche Pakete.

  3. Wenn Sie dazu aufgefordert werden, starten Sie Ihre Workstation neu, damit alle Änderungen wirksam werden.

  4. Wählen Sie das Tintenfischgerät aus.

Sie sollten mit einer VNC-Sitzung mit einem Android-Gerät begrüßt werden!

Sie können über Maus und Tastatur mit dem virtuellen Gerät auf Ihrer Workstation interagieren. Sie können auch die Aktivität in den Protokollen folgen , während Sie Ihr Gerät verwenden , indem Sie die Android Debug Bridge (adb) unter Verwendung logcat Befehl ein :

adb logcat

Nehmen Sie eine Änderung vor

Aktualisieren Sie den Quellcode nach diesem Beispiel Änderungsliste .

  1. Von der Wurzel Ihrer Kasse ( aosp/ Verzeichnis), wechseln Sie zum frameworks/native Git - Projekt:

    cd frameworks/native
    
  2. Starten Sie ein temporäres Projekt mit diesem Befehl:

    repo start <some-name> .
    
  3. Bearbeiten SurfaceFlinger.cpp das Updates von der Änderungsliste an folgenden Stelle umfassen:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Finden Sie diese beiden Zeilen:

    postFrame();
    postComposition();
    
  5. Ersetzen Sie diese beiden Zeilen durch Folgendes:

    postFrame();
    postComposition();
    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});
    updateColorMatrixLocked();
    
  6. Erstellen Sie den Code:

    m
    
  7. Aktualisieren Sie den Build auf dem Gerät:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Wenn Sie aufgefordert werden, ein Gerät auszuwählen, wählen Sie das aus, das die kürzeste verstrichene Zeit anzeigt. (Dies ist wahrscheinlich die letzte in der Liste , die Sie sehen.) Um alle virtuellen Geräteinstanzen zu sehen, verwenden Sie die acloud list und acloud list -v Befehle.

Stellen Sie sicher, dass auf Ihrem ausgewählten Gerät eine Farbänderung ähnlich der in Abbildung 1 angezeigt wird.

Example of a successful color change

Abbildung 1. Bildschirm Aussehen nach erfolgreichen Farbwechseln

Testen Sie Ihren Code

Dieser Teil des Codelabs verwendet einen Beispieltest, der sich im Quellbaum befindet und fehlschlägt. Dies setzt Atest für den Test vor Ort ausgeführt wird und den Code zu testen.

Um den Test zu verwenden, befolgen Sie diese Anweisungen:

  1. Lauf:

    atest DevCodelabTest
    
  2. Der Test wird fehlschlagen. Um das Problem zu beheben, suchen Sie den Quellcode des fehlgeschlagenen Tests:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Dann schau hier

    platform_testing/tests/example/devcodelab
    
  4. Um die Datei zu bearbeiten, nehmen Sie den Namen des Tests in android.test.example.devcodelab.DevCodelabTest und ersetzen die . mit / , um dieses Ergebnis zu erhalten:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Dann bearbeiten

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    ersetzen

    Assert.assertTrue(false)
    

    mit

    Assert.assertTrue(true)
    
  6. Führen Sie den Test erneut aus, um zu überprüfen, ob Sie das Problem behoben haben:

    atest DevCodelabTest
    

Laden Sie Ihren Code zur Überprüfung hoch

Repo vereinfacht Git Verwendung von Befehlen wie die Bündelung git clone zur Arbeit in zahlreichen Git - Repositories (oder Projekte) auf einmal.

Siehe Quelle Control Tools für Übersichten über Git und Repo, mit Links zu den vollständigen Dokumentation über die Arbeit mit Android - Quellcode. Siehe die AOSP - Repository für die vollständige Liste der Git - Projekte und die einzelnen Projekte (Pfade) für die mit jedem Projekt zugeordnet Zweige.

Für die Code - Überprüfung Ihrer Projekte in Git, werden Sie die Verwendung Gerrit web-basierten Code - Review - System.

  1. Vorausgesetzt , dass Sie Ihre Änderungen in der gemacht frameworks/native Projekt, führen Sie diese Befehle , sie zu laden:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Geben Sie für Ihre Commit-Nachricht Folgendes ein:

    Android codelab change
    Test: manual atest
    
  3. Laden Sie Ihre Änderung hoch:

    repo upload
    

Wenn Sie erfolgreich sind, sehen Sie eine Nachricht ähnlich dieser:

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 im Terminal gedruckten Link, der diesem ähnelt:

https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432

Damit ist das Starter-Codelab für die Android-Plattformentwicklung abgeschlossen. Siehe Patches erstellen für die nächsten Schritte, und für weitere Informationen auf Android zu entwickeln, finden Sie den Rest dieser Website.

Machen Sie Ihre Änderung rückgängig

Normalerweise reichen Sie nach dem Testen und nach Prüfung und Genehmigung Ihre Änderung in Gerrit ein und fügen sie in das Repository ein.

Stattdessen für die Zwecke dieses Codelab, kehren Ihre Änderungsliste von in Gerrit Abandon klicken.

Dann verlassen die zugehörigen temporären Zweig im frameworks/native Projektverzeichnis (oder dessen Unterverzeichnisse):

repo abandon codelab .

Denken Sie auch daran, die an der Testdatei vorgenommenen Änderungen rückgängig zu machen. Da Sie nicht das repo start , git commit und repo upload die Änderung, können Sie die Datei selbst zurücksetzen. Angenommen , Sie sind in dem aosp/platform_testing directory , verwenden Sie die folgende Datei zurück:

git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .

An dieser Stelle sind Sie fertig! Gute Arbeit!

Hilfe erhalten

Wenn Sie Fehler in dieser Codelab begegnen, bitte melden sie den mit Issue Tracker Link am Ende jeder Seite. Bitte senden Sie Fragen zu den Android-Gebäude Gruppe.