Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
Verwendung von Flags ermitteln
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 ermitteln
Es gibt zwei Arten von Flags: aconfig-Flags und Build-Flags.
Aconfig-Flags
Mit Aconfig-Flags wird die Ausführung von nicht veröffentlichtem Code während des Test- und Release-Prozesses von der Ausführung von veröffentlichtem Code getrennt. Aconfig-Flags können Lese-/Schreibzugriff oder Lesezugriff haben:
Lese-/Schreib-aconfig-Flags sind boolesche Variablen, die Sie zur Laufzeit aktivieren (auf true setzen) oder deaktivieren (auf false 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 mit Lesezugriffsflags Code ausblenden, der noch nicht für eine Veröffentlichung bereit ist.
Build-Flags
Build-Flags sind Konstanten (Strings) zur Buildzeit 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 vorkonfigurierten Code, den Sie in den Build einbinden möchten.
Sie möchten Änderungen am Build-System selbst vornehmen.
Sie möchten Abhängigkeiten mit Flags versehen, um die Codegröße zu verwalten.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Determine flag usage and type\n\nFeature launch flags are used by Google as an approach to ensuring stable\ncode branches. These flags are also required for certain types of contributions\nto AOSP. Before implementing feature launch flagging, determine if\na flag is necessary for your change. And, if a flag is necessary, you should\ndetermine the type of flag to use.\n\nDetermine flag usage\n--------------------\n\nTo determine when to use a feature launch flag, follow these guidelines:\n\n- If you are making a change that could cause the AOSP codebase to be unstable,\n such as adding a new feature or fixing a particularly complex bug, use a feature\n launch flag.\n\n- Conversely, if you are making a code change that isn't apt to cause the\n codebase to be unstable, such as modifying comments, you don't need to use a\n feature launch flag.\n\nDetermine flag type\n-------------------\n\nThere are two types of flags: *aconfig flags* and *build flags*.\n\n### Aconfig flags\n\nAconfig flags are used to separate the execution of unreleased code from\nreleased code during the testing and release process. Aconfig flags can be\nread-write or read-only:\n\n- *Read-write aconfig flags* are boolean variables that you can enable (set to\n `true`) or disable (set to `false`) at runtime. Use a read-write flag to test\n and release changes without affecting the stability of a main branch.\n\n- *Read-only aconfig flags* are boolean constants that you can't change at\n runtime. You can convert read-write aconfig flags to read-only aconfig flags\n for code that is stable and ready to release.\n\n Additionally, depending on the compiler you're using, when a read-only flag\n is used, the code that isn't executed might be excluded\n from the build. Therefore, you can use read-only flags to hide any code that\n isn't ready to be part of a release.\n\n### Build flags\n\nBuild flags are build-time constants (strings) and you can't change them during\nruntime. Use these flags in circumstances where you can't use aconfig flags,\nsuch as:\n\n- You have a precompiled or prebuilt piece of code that you want to include in the build.\n- You want to make changes to build system itself.\n- You want to put flags around dependencies to manage code size.\n\n| **Note:** Build flags have special encodings for boolean values (`false: {empty string}, true: \"true\"`)."]]