Auf dieser Seite wird der gesamte Prozess zum Einreichen einer Codeänderung für das Android Open Source Project (AOSP) beschrieben, einschließlich der Schritte zum Anfordern einer Überprüfung und zum Nachverfolgen Ihrer Änderungen.
AOSP basiert auf Gerrit, einem webbasierten Code-Review-System für Projekte, die Git verwenden.
Lizenzvereinbarungen für Mitwirkende unterzeichnen
Bevor Sie Codeänderungen für AOSP beitragen, müssen Sie die Beitragenden-Lizenzvereinbarungen und Header lesen und eine der folgenden Vereinbarungen unterzeichnen:
- Wenn Sie als Einzelperson nur in Ihrem Namen Beiträge leisten, unterzeichnen Sie die Lizenzvereinbarung für Einzelbeitragende.
- Wenn Sie als Mitarbeiter eines Unternehmens arbeiten, muss Ihr Unternehmen die Corporate Contributor License Agreement unterzeichnet haben, die Sie dazu berechtigt, Beiträge im Namen des Unternehmens zu leisten.
Branch erstellen
Führen Sie für jede Codeänderung, die Sie vornehmen möchten, die folgenden Schritte aus:
Starten Sie einen neuen Branch im entsprechenden Git-Repository. Ein Branch ist keine Kopie der Originaldateien, sondern ein Zeiger auf einen bestimmten Commit. Daher ist das Erstellen lokaler Branches und das Wechseln zwischen ihnen ein unkomplizierter Vorgang. Mithilfe von Branches können Sie Änderungen voneinander abgrenzen. Führen Sie diesen Befehl aus, um einen Branch zu starten:
repo start BRANCH_NAME
Sie können mehrere unabhängige Branches gleichzeitig im selben Repository starten. Der Branch BRANCH_NAME ist lokal in Ihrem Arbeitsbereich und ist weder in Gerrit noch im endgültigen Quellbaum enthalten. Branches sind auch spezifisch für das Projekt, in dem Sie sich befinden. Wenn Sie also Dateien in verschiedenen Projekten im Rahmen derselben Änderung ändern müssen, benötigen Sie in jedem Projekt, in dem Sie Dateien ändern, einen Branch.
(Optional) Prüfen Sie, ob der Branch erstellt wurde:
repo status .
Der neu erstellte Branch sollte angezeigt werden. Beispiel:
project frameworks/native/ branch mynewbranch
Änderung vornehmen und testen
So nehmen Sie die Änderung vor und testen sie:
Um sicherzugehen, dass Sie mit der aktuellen Codebasis arbeiten, synchronisieren Sie die gesamte Codebasis:
repo sync
Wenn während der Synchronisierung Konflikte auftreten, folgen Sie den Schritten 2 bis 4 unter Synchronisierungskonflikte beheben.
Suchen Sie den Code, den Sie ändern möchten. Wenn Sie Code suchen möchten, können Sie Android Code Search verwenden. Mit Android Code Search können Sie den AOSP-Quellcode so ansehen, wie er bei der tatsächlichen Verwendung dargestellt wird. Weitere Informationen finden Sie unter Erste Schritte mit Code Search. Wenn Sie den gesamten Code im neuesten AOSP-Release-Branch in Android Code Search aufrufen möchten, rufen Sie
https://cs.android.com/android/platform/superproject/
auf.Quelldateien ändern oder hinzufügen Bei allen vorgenommenen Änderungen:
Prüfen Sie, ob Sie Flags für die Einführung von Funktionen verwenden müssen, und implementieren Sie sie gegebenenfalls für Ihren neuen Code.
Befolgen Sie die Best Practices unter Lizenzheader einfügen.
Für Java-Code folgen Sie dem AOSP Java-Codestil für Mitwirkende.
Einige Teile von AOSP sind in Kotlin (
.kt
) geschrieben und Sie können Kotlin in Bereichen der Plattform verwenden, die bereits in Kotlin geschrieben sind. Weitere Informationen zu Kotlin in Android finden Sie im Kotlin-Styleguide und im Leitfaden zur Kotlin-Java-Interoperabilität für Android-Entwickler. Weitere Informationen zu KotlinHalten Sie sich beim Schreiben von APIs an die Android API Guidelines. Anhand dieser Richtlinien können Sie den Kontext hinter den API-Entscheidungen von Android nachvollziehen. Ergänzungen und Änderungen von Plattform-APIs werden von Metalava validiert.
Änderung stagen und committen
Ein Commit ist die Grundeinheit der Versionskontrolle in Git und besteht aus einem Snapshot der Verzeichnisstruktur und des Dateiinhalts für das gesamte Projekt. So übernehmen Sie die Änderung:
Standardmäßig registriert Git die Änderungen, die Sie vornehmen, verfolgt sie aber nicht. Damit Git Ihre Änderungen verfolgt, müssen Sie sie markieren oder für die Aufnahme in ein Commit bereitstellen. Führen Sie diesen Befehl aus, um die Änderung zu stagen:
git add -A
Mit diesem Befehl werden Änderungen nachverfolgt, die Sie an Dateien vorgenommen haben.
Nehmen Sie die Dateien im Staging-Bereich und führen Sie einen Commit durch oder speichern Sie sie in Ihrer lokalen Datenbank:
git commit -s
Standardmäßig wird ein Texteditor geöffnet und Sie werden aufgefordert, eine Commit-Nachricht anzugeben.
Geben Sie eine Commit-Nachricht im folgenden Format an:
Zeile 1: Überschrift. Geben Sie eine einzeilige Zusammenfassung der Änderung an (maximal 50 Zeichen). Verwenden Sie Präfixe, um den Bereich zu beschreiben, den Sie geändert haben. Geben Sie dann eine Beschreibung der Änderung an, die Sie in diesem Commit vorgenommen haben. Hier ist ein Beispiel für eine Änderung der Benutzeroberfläche:
ui: Removes deprecated widget
Zeile 2: Leere Zeile. Lassen Sie nach der Überschrift eine leere Zeile.
Zeile 3: Body. Geben Sie eine lange Beschreibung an, die maximal 72 Zeichen pro Zeile umfasst. Beschreiben Sie, welches Problem durch die Änderung behoben wird und wie. Der Textkörper ist zwar optional, aber für andere Nutzer, die sich die Änderung noch einmal ansehen müssen, ist er hilfreich. Fügen Sie unbedingt eine kurze Notiz mit allen Annahmen oder Hintergrundinformationen hinzu, die wichtig sein könnten, wenn ein anderer Mitwirkender an dieser Funktion arbeitet.
Einen Blogbeitrag mit Beispielen für gute Commit-Beschreibungen finden Sie unter How to Write a Git Commit Message.
Speichern Sie den Commit.
Eine eindeutige Änderungs-ID sowie Ihr Name und Ihre E-Mail-Adresse, die während repo init
angegeben wurden, werden automatisch in Ihre Commit-Nachricht eingefügt.
Änderung zur Überprüfung hochladen
Nachdem Sie Ihre Änderung in Ihrem persönlichen Git-Verlauf gespeichert haben, laden Sie sie in Gerrit hoch:
Führen Sie den folgenden Befehl aus, um alle Ihre Commits in allen Ihren Projekten hochzuladen:
repo upload
Alle Änderungen in allen Projekten sind im Upload enthalten.
.Sie werden aufgefordert, Hook-Skripts auszuführen.
Drücken Sie A und dann die Eingabetaste.
Sie werden aufgefordert, den Upload zu genehmigen:
Upload project frameworks/native/ to remote branch android16-release: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
Drücken Sie y und dann die Eingabetaste, um den Upload zu genehmigen.
Sie sollten eine Nachricht ähnlich der folgenden erhalten: remote: SUCCESS
.
Überprüfung beantragen
Nach einem erfolgreichen Upload stellt Repo einen Link zu Ihren Änderungen in Gerrit bereit. Klicken Sie auf den Link, um Ihre Änderungen auf dem Überprüfungsserver anzusehen, Kommentare hinzuzufügen oder bestimmte Prüfer für Ihre Änderung anzufordern. Alle Änderungen am Code müssen von den entsprechenden Code-Inhabern überprüft werden.
So beantragen Sie eine Überprüfung:
Klicken Sie in Gerrit auf SUGGEST OWNERS (Inhaber vorschlagen):
Abbildung 1: In Gerrit einen Link zu den Eigentümern vorschlagen.
Das Dialogfeld für den Prüfer wird angezeigt. Dieses Dialogfeld enthält eine Liste der Code-Inhaber, die Ihre Änderung überprüfen können.
Klicken Sie auf einen Code-Inhaber, um ihn Ihrer Überprüfung hinzuzufügen.
Die Schaltfläche SENDEN ist aktiviert.
Optional: Geben Sie die E‑Mail-Adresse einer anderen Person ein, die Ihre Änderung prüfen soll.
Klicken Sie auf SENDEN, um die Änderung zur Überprüfung zu senden.
Code-Inhaber prüfen Ihre Codeänderungen. Wenn sie akzeptiert werden, wird die Änderung per Cherry-Picking übernommen und in den internen Entwicklungszweig eingefügt.
Status der Änderung ermitteln
So ermitteln Sie den Status der Dateien in Ihrer Änderung:
- (Häkchen): Vom Code-Inhaber genehmigt
- (Kreuzsymbol): Nicht vom Code-Inhaber genehmigt
- (Uhr-Symbol): Genehmigung durch Codeinhaber ausstehend
In der folgenden Abbildung sind diese Statussymbole für Dateien in einer Änderung dargestellt:
Abbildung 2: Beispiel für Dateien mit Symbolen, die die Genehmigung des Codeinhabers zeigen.
Feedback berücksichtigen und Ersatzänderung hochladen
Wenn ein Prüfer eine Änderung an Ihrem Update anfordert, können Sie Ihr Commit in Git ändern. Dadurch wird ein neues Patchset für dieselbe Änderung erstellt.
zu diesem Branch wechseln.So reagieren Sie auf Feedback und ändern Ihre Änderung:
Führen Sie die Schritte 2 bis 4 unter Änderung vornehmen und testen aus.
Führen Sie die folgenden Befehle aus, um Ihre Änderung zu korrigieren:
git add -A git commit --amend
Wenn Sie die geänderte Änderung hochladen, wird das Original sowohl in Gerrit als auch in Ihrem lokalen Git-Verlauf ersetzt.
Synchronisierungskonflikte beheben
Wenn andere Änderungen am Quellbaum eingereicht werden, die mit Ihren Änderungen in Konflikt stehen, erhalten Sie eine entsprechende Meldung. So beheben Sie die Konflikte:
So stellen Sie sicher, dass Sie mit dem aktuellen Code arbeiten:
repo sync .
Mit dem Befehl
repo sync
werden die Updates vom Quellserver abgerufen und dann wird versucht, IhrHEAD
automatisch auf das neue Remote-HEAD
zu rebasen.Wenn die automatische Rebase-Operation nicht erfolgreich ist, führen Sie eine manuelle Rebase-Operation durch:
repo rebase .
Lösen Sie Zusammenführungskonflikte. Wenn Sie keine bevorzugte Methode zum Beheben von Merge-Konflikten haben, können Sie
git mergetool
verwenden, um Konflikte zwischen Dateien manuell zu beheben.Wenn Sie die Konflikte in den Dateien behoben haben, führen Sie diesen Befehl aus, um die neuen Commits anzuwenden:
git rebase --continue
Änderung senden
Nachdem ein Beitrag den Überprüfungs- und Bestätigungsprozess durchlaufen hat, reicht der Codeinhaber den Code für Sie ein, entweder im Zweig, in dem die Änderung überprüft wurde, oder in einem internen Zweig.
Nachdem Ihr Beitrag zusammengeführt wurde, können Sie im Android Continuous Integration-Dashboard nachsehen, wann Ihre Beiträge in den Baum integriert werden.