Mithilfe von Flags für die Einführung von Funktionen sorgt Google für stabile Codezweige. Diese Flags sind auch für bestimmte Arten von Beiträgen zum AOSP erforderlich. Bevor Sie Markierungen für die Einführung von Funktionen implementieren, sollten Sie prüfen, ob für Ihre Änderung eine Markierung erforderlich ist. Falls ein Flag erforderlich ist, sollten Sie auch den zu verwendenden Flag-Typ festlegen.
Flag-Nutzung bestimmen
Beachten Sie die folgenden Richtlinien, um zu entscheiden, wann Sie ein Flag für die Einführung einer Funktion verwenden sollten:
Wenn Sie eine Änderung vornehmen, die dazu führen kann, dass die AOSP-Codebasis instabil wird, z. B. durch das Hinzufügen einer neuen Funktion oder das Beheben eines besonders komplexen Fehlers, verwenden Sie ein Flag für die Einführung einer Funktion.
Wenn Sie hingegen eine Codeänderung vornehmen, die die Codebasis nicht instabil machen kann, z. B. das Ändern von Kommentaren, müssen Sie kein Flag für die Einführung einer Funktion verwenden.
Flag-Typ bestimmen
Es gibt zwei Arten von Flags: aconfig-Flags und Build-Flags.
Aconfig-Flags
Aconfig-Flags werden verwendet, um die Ausführung von nicht freigegebenem Code während des Test- und Veröffentlichungsprozesses von freigegebenem Code zu trennen. Aconfig-Flags können schreibgeschützt oder schreibgeschützt sein:
Lese-/Schreib-aconfig-Flags sind boolesche Variablen, die Sie zur Laufzeit aktivieren (auf
true
setzen) oder deaktivieren (auffalse
setzen) können. Verwenden Sie ein Lese-/Schreib-Flag, um Änderungen zu testen und freizugeben, ohne die Stabilität eines Haupt-Branches zu beeinträchtigen.Schreibgeschützte aconfig-Flags sind boolesche Konstanten, die während der Laufzeit nicht geändert werden können. Sie können Lese-/Schreib-Aconfig-Flags in Lesezugriffs-Aconfig-Flags für Code konvertieren, der stabil und zur Veröffentlichung bereit ist.
Außerdem wird der Code, der nicht ausgeführt wird, je nach verwendetem Compiler möglicherweise vom Build ausgeschlossen, wenn ein schreibgeschütztes Flag verwendet wird. Daher können Sie schreibgeschützte Flags verwenden, um Code auszublenden, der nicht für einen Release bereit ist.
Build-Flags
Build-Flags sind Build-Zeitkonstanten (Strings) und können während der Laufzeit nicht geändert werden. Verwenden Sie diese Flags in Fällen, in denen Sie keine aconfig-Flags verwenden können, z. B.:
- Sie haben einen vorkompilierten oder vordefinierten Code, den Sie in den Build aufnehmen möchten.
- Sie möchten Änderungen am Build-System selbst vornehmen.
- Sie möchten Flags um Abhängigkeiten setzen, um die Codegröße zu verwalten.