Codeänderungen einreichen

Auf dieser Seite wird der vollständige Prozess zum Senden einer Codeänderung an das Android Open Source Project (AOSP) beschrieben. Außerdem wird beschrieben, wie Sie eine Überprüfung beantragen und Ihre Änderungen nachverfolgen können.

AOSP stützt sich auf ein Gerrit, ein webbasiertes Codeüberprüfungssystem für Projekte, die Git verwenden.

Lizenzvereinbarungen für Mitwirkende unterzeichnen

Bevor Sie Codeänderungen für AOSP beitragen, müssen Sie die Lizenzvereinbarungen und Header für Contributor lesen und eine der folgenden Vereinbarungen unterzeichnen:

Zweig starten

Führen Sie für jede Codeänderung, die Sie vornehmen möchten, die folgenden Schritte aus:

  1. Starten Sie einen neuen Zweig im relevanten Git-Repository. Ein Zweig ist keine Kopie der Originaldateien. Er ist ein Zeiger auf einen bestimmten Commit, was das Erstellen lokaler Zweige und das Wechseln zwischen ihnen zu einem einfachen Vorgang macht. Durch die Verwendung von Zweigen können Sie Änderungen voneinander identifizieren. Führen Sie den folgenden Befehl aus, um einen Zweig zu starten:

    repo start BRANCH_NAME
    

    Sie können im selben Repository mehrere unabhängige Zweige gleichzeitig starten. Der Zweig BRANCH_NAME ist lokal in Ihrem Arbeitsbereich und ist weder auf Gerrit noch in der endgültigen Quellstruktur enthalten. Zweige sind auch projektspezifisch. Wenn Sie also im Rahmen derselben Änderung Dateien in verschiedenen Projekten ändern müssen, benötigen Sie in jedem Projekt, in dem Sie Dateien ändern, einen Zweig.

  2. (Optional) Prüfen Sie, ob der Zweig erstellt wurde:

    repo status .
    

    Der neu erstellte Zweig sollte angezeigt werden. Beispiel:

    project frameworks/native/                      branch mynewbranch
    

Änderungen vornehmen und testen

Führen Sie die folgenden Schritte aus, um Ihre Änderung vorzunehmen und zu testen:

  1. Führen Sie eine Synchronisierung der gesamten Codebasis durch, um sicherzustellen, dass Sie mit der neuesten Codebasis arbeiten:

    repo sync
    

    Falls während der Synchronisierung Konflikte auftreten, lesen Sie die Schritte 2 bis 4 unter Synchronisierungskonflikte lösen.

  2. Suchen Sie den Code, den Sie ändern möchten. Sie können die Android Code Search verwenden, um Code zu finden. Mit der Android Codesuche können Sie sich den AOSP-Quellcode ansehen, wie er bei der tatsächlichen Verwendung dargestellt wird. Weitere Informationen finden Sie unter Erste Schritte bei der Codesuche. Wenn Sie den gesamten Code im main-Branch innerhalb der Android-Codesuche ansehen möchten, rufen Sie https://cs.android.com/android/platform/superproject/main auf.

  3. Ändern oder fügen Sie Quelldateien hinzu. Gehen Sie für alle vorgenommenen Änderungen wie folgt vor:

  4. Android erstellen

  5. Build testen

Änderung bereitstellen und per Commit bestätigen

Ein Commit ist die Grundeinheit der Versionsverwaltung in Git und besteht aus einem Snapshot der Verzeichnisstruktur und der Dateiinhalte für das gesamte Projekt. Führen Sie die folgenden Schritte aus, um die Änderung zu übernehmen:

  1. Standardmäßig registriert Git die von Ihnen vorgenommenen Änderungen jedoch nicht. Um Git anzuweisen, Ihre Änderungen nachzuverfolgen, müssen Sie diese Änderungen markieren oder stufen, damit sie in einen Commit aufgenommen werden. Führen Sie den folgenden Befehl aus, um die Änderung bereitzustellen:

    git add -A
    

    Dieser Befehl verfolgt Änderungen, die Sie an Dateien vorgenommen haben.

  2. Führen Sie für die Dateien im Staging-Bereich 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.

  3. Geben Sie eine Commit-Nachricht im folgenden Format an:

    • Zeile 1: Überschrift. Geben Sie eine einzeilige Zusammenfassung der Änderung ein (maximal 50 Zeichen). Verwenden Sie Präfixe, um den geänderten Bereich zu beschreiben, gefolgt von einer Beschreibung der Änderung, die Sie in diesem Commit vorgenommen haben, wie im folgenden Beispiel mit einer Änderung der Benutzeroberfläche:

      ui: Removes deprecated widget
      
    • Zeile 2: Leerzeile. Folgen Sie dem Anzeigentitel mit einer Leerzeile.

    • Zeile 3: Text. Geben Sie eine lange Beschreibung an, die mit maximal 72 Zeichen umgebrochen wird. Beschreiben Sie, welches Problem durch die Änderung behoben wird und wie. Obwohl der Text optional ist, ist er für andere hilfreich, die sich auf die Änderung beziehen müssen. Geben Sie unbedingt kurz alle Annahmen oder Hintergrundinformationen an, die wichtig sein könnten, wenn ein anderer Mitwirkender an dieser Funktion arbeitet.

    Einen Blog über gute Commit-Beschreibungen (mit Beispielen) finden Sie unter So schreiben Sie eine Git-Commit-Nachricht.

  4. Speichern Sie das Commit.

Eine eindeutige Änderungs-ID sowie Ihr Name und Ihre E-Mail-Adresse, die während repo init angegeben wurden, werden Ihrer Commit-Nachricht automatisch hinzugefügt.

Änderung zur Überprüfung hochladen

Nachdem Sie Ihre Änderung in Ihrem persönlichen Git-Verlauf gespeichert haben, laden Sie sie in Gerrit hoch:

  1. Führen Sie den folgenden Befehl aus, um alle Commits in alle Ihre Projekte hochzuladen:

    repo upload
    

    Alle Änderungen in allen Projekten werden in den Upload einbezogen.

    Sie werden aufgefordert, Hook-Skripts auszuführen.

  2. Drücken Sie A und dann die Eingabetaste.

    Sie werden aufgefordert, den Upload zu genehmigen:

    Upload project frameworks/native/ to remote branch main:
    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)?
    
  3. Drücken Sie Y und dann die Eingabetaste, um den Upload zu genehmigen.

Sie sollten eine Nachricht wie diese erhalten: remote: SUCCESS.

Überprüfung beantragen

Nach einem erfolgreichen Upload erhalten Sie von Repo einen Link zu Ihren Änderungen in Gerrit. 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 Codeinhabern überprüft werden. So beantragen Sie eine Überprüfung:

  1. Klicke in Gerrit auf EIGENTUMSRECHTE VORSCHLAGEN:

    Link „Inhaber vorschlagen“ in Gerrit

    Abbildung 1: Link „Inhaber vorschlagen“ in Gerrit.

    Das Dialogfeld für Prüfer wird angezeigt. Dieses Dialogfeld enthält eine Liste der Codeinhaber, die Ihre Änderung prüfen können.

  2. Klicken Sie auf einen Codeinhaber, um ihn Ihrer Rezension hinzuzufügen.

    Die Schaltfläche SEND (Senden) ist aktiviert.

  3. Optional: Geben Sie die E-Mail-Adressen aller anderen ein, deren Änderung Sie prüfen möchten.

  4. Optional: Klicken Sie neben „Automatisch senden“ auf +1, um die Änderung automatisch einzureichen, nachdem Sie die Genehmigungen erhalten haben. Wenn Sie nicht auf diese Schaltfläche klicken, muss ein Google-Mitarbeiter Ihre Änderung für Sie einreichen.

  5. Klicke auf SENDEN, um die Änderung zur Überprüfung zu senden.

Codeinhaber prüfen Ihre Codeänderungen und geben Ihnen entweder Feedback, damit Sie die Änderungen korrigieren oder genehmigen können.

Bestimmen des Änderungsstatus

Prüfen Sie, ob die folgenden Symbole neben den Dateien in der Änderung angezeigt werden, um den Status der Dateien in Ihrer Änderung zu ermitteln:

  • (Häkchensymbol): Vom Codeinhaber genehmigt
  • (Kreuzsymbol): Nicht vom Codeinhaber genehmigt
  • (Uhrensymbol): Genehmigung durch Codeinhaber ausstehend

Die folgende Abbildung zeigt diese Statussymbole, die auf Dateien in einer Änderung angewendet werden:

Beispiel für Dateien mit Symbolen, die die Genehmigung des Codeinhabers anzeigen

Abbildung 2: Beispiel für Dateien mit Symbolen, die die Genehmigung des Codeinhabers anzeigen

Feedback klären und Ersatzänderung hochladen

Wenn ein Prüfer eine Änderung an Ihrem Update anfordert, können Sie Ihren Commit in Git ändern. Dies führt zu einem neuen Patchset für dieselbe Änderung.

So klären Sie das Feedback und ändern Ihre Änderung:

  1. Führen Sie die Schritte 2 bis 4 unter Änderung vornehmen und testen aus.

  2. Führen Sie die folgenden Befehle aus, um Ihre Änderung zu ändern:

    git add -A
    git commit --amend
    
  3. Laden Sie die Änderung hoch.

Wenn Sie die geänderte Änderung hochladen, ersetzt sie das Original sowohl auf Gerrit als auch in Ihrem lokalen Git-Verlauf.

Synchronisierungskonflikte lösen

Wenn andere Änderungen an die Quellstruktur gesendet werden, die mit Ihren in Konflikt stehen, erhalten Sie eine Meldung, dass Konflikte vorliegen. So lösen Sie die Konflikte:

  1. Achten Sie darauf, mit dem aktuellen Code zu arbeiten:

    repo sync .
    

    Der Befehl repo sync ruft die Updates vom Quellserver ab und versucht dann, HEAD automatisch auf dem neuen Remote-HEAD zu erstellen.

  2. Wenn die automatische Rebase nicht erfolgreich ist, führen Sie eine manuelle Rebase durch:

    repo rebase .
    
  3. Zusammenführungskonflikte lösen Wenn Sie keine bevorzugte Methode zum Lösen von Zusammenführungskonflikten haben, können Sie git mergetool verwenden, um Konflikte zwischen Dateien manuell zu beheben.

  4. Wenn Sie die in Konflikt stehenden Dateien erfolgreich korrigiert haben, führen Sie den folgenden Befehl aus, um die neuen Commits anzuwenden:

    git rebase --continue
    

Änderung senden

Nachdem eine Einreichung den Überprüfungs- und Bestätigungsprozess durchlaufen hat, muss ein Google-Prüfer den Code für Sie einreichen. Andere Nutzer können repo sync ausführen, um das Update in ihre jeweiligen lokalen Clients abzurufen.

Nachdem die Einreichungen zusammengeführt wurden, können Sie im Dashboard von Android Continuous Integration nachsehen, ob Ihre Einreichungen in die Baumstruktur integriert sind.