Standardmäßig sind alle Flags für die Einführung von Funktionen READ_WRITE und auf DISABLED gesetzt.
Bevor Sie eine Funktion testen können, müssen Sie den im Build verwendeten Standardwert überschreiben, indem Sie eine Datei mit Flag-Werten für das Flag erstellen. In einer Datei mit Flag-Werten legen Sie den Status (ENABLED oder DISABLED) und die Berechtigung (READ_WRITE oder READ_ONLY) für ein einzelnes Flag fest.
Eine Release-Konfiguration ist ein Verzeichnis, das alle Dateien mit Flag-Werten für einen bestimmten Build von Android enthält (mit bestimmten aktivierten und deaktivierten Funktionen).
AOSP wird mit einigen Releasekonfigurationen ausgeliefert, z. B. trunk_staging.
Releasekonfigurationsverzeichnisse befinden sich unter WORKING_DIRECTORY/build/release/aconfig/.
Wenn Sie mit dem Befehl lunch ein Ziel auswählen, legen Sie auch die Releasekonfiguration für das Ziel fest.
Das Folgende ist beispielsweise ein trunk_staging-Ziel:
lunch aosp_cf_x86_64_only_phone-trunk_staging-userdebug
Trunk-Staging ist eine Konfiguration für Entwicklungsreleases, da Google sie zum Testen von Funktionen vor der allgemeinen Veröffentlichung verwendet. Bei dieser Konfiguration werden hauptsächlich READ_WRITE-Flags verwendet, mit denen Sie Ihren Code mit aktivierten oder deaktivierten Funktionen zur Laufzeit testen können.
Verwenden Sie bei der allgemeinen Veröffentlichung eine Releasekonfiguration. Eine Release-Konfiguration verwendet hauptsächlich READ_ONLY-Flags und enthält den gesamten für diesen Release aktivierten Code.
Flag zur Releasekonfiguration „trunk_staging“ hinzufügen
So testen Sie ein neues Flag: Fügen Sie es der trunk_staging-Releasekonfiguration hinzu:
- Zu
WORKING_DIRECTORY/build/release/aconfig/trunk_staging/navigieren - Erstellen Sie ein Verzeichnis mit demselben Paketnamen wie Ihr Flag, z. B.
com.example.android.aconfig.demo.flags, wie in Aconfig-Flag für Java deklarieren gezeigt. - Wechseln Sie zum neuen Verzeichnis.
- Erstellen Sie im Verzeichnis eine Datei mit Flag-Werten, in der der Name aus der Datei mit der Flag-Deklaration (
.aconfig), z. B.my_static_flagaus Aconfig-Flag für Java deklarieren, mit_flag_values.textprotokombiniert wird. Der resultierende Dateiname lautetmy_static_flag_flag_values.textproto. Bearbeiten Sie die Datei und fügen Sie einen
flag_valueein, der dem folgenden ähnelt:flag_value { package: "com.example.android.aconfig.demo.flags" name: "my_static_flag" state: DISABLED Permission: READ_WRITE }Dabei gilt:
packageenthält denselben Paketnamen, der in der Deklaration verwendet wird.nameenthält denselben Namen, der in der Deklaration verwendet wird.stateist entwederENABLEDoderDISABLED.permissionist entwederREAD_WRITEoderREAD_ONLY. Im Allgemeinen wirdpermissionfür Flag-Wert-Dateien, die Teil einer Releasekonfiguration sind, aufREAD_ONLYgesetzt.
Speichern Sie die Datei und beenden Sie den Editor.
Erstellen Sie im selben Verzeichnis wie die Datei mit den Flag-Werten eine Build-Datei mit dem Namen
Android.bp. Diese Datei wird verwendet, um die Datei mit den Flag-Werten in den Build einzuschließen.Erstellen Sie in der Datei
Android.bpeinenaconfig_values-Abschnitt, der so aussieht:aconfig_values { name: "aconfig-values-platform_build_release-trunk-staging-com.example.android.aconfig.demo.flags-all", package: "com.example.android.aconfig.demo.flags", srcs: [ "*_flag_values.textproto", ] }Dabei gilt:
nameist der eindeutige Name für das Soong-Build-Modul. Google verwendet die Konventionaconfig-values-platform_PATH_TO_RELEASE_CONFIG_DIR-CONFIG_NAME-package.name-all. Dieser Name muss mit dem Namen übereinstimmen, der von Soong automatisch auf Grundlage deraconfig_value_set-Deklaration in derAndroid.bp-Datei des übergeordneten Verzeichnisses generiert wird.PATH_TO_RELEASE_CONFIG_DIRistbuild_release.packageenthält denselben Paketnamen, der in der Deklaration verwendet wird.srcsist eine Liste aller Dateien mit Flag-Werten.
Speichern Sie die Datei und beenden Sie den Editor.
Wechseln Sie zum Verzeichnis über dem aktuellen Verzeichnis (
cd ..).Erstellen Sie Android und führen Sie den neuen Code aus, um zu prüfen, ob er gemäß der Einstellung in der Datei mit den Flag-Werten aktiviert ist.