По умолчанию все флаги запуска функций имеют READ_WRITE и установлены в DISABLED . Прежде чем тестировать функцию, необходимо переопределить значение по умолчанию, используемое в сборке, создав файл значений флагов . В файле значений флагов вы устанавливаете состояние отдельного флага ( ENABLED или DISABLED ) и права доступа ( READ_WRITE или READ_ONLY ).
Конфигурационный каталог релиза содержит все файлы со значениями флагов для конкретной сборки Android (с включенными и выключенными определенными функциями).
AOSP поставляется с несколькими конфигурациями релизов, такими как trunk_staging . Каталоги конфигураций релизов находятся в WORKING_DIRECTORY /build/release/aconfig/ .
При использовании команды lunch для выбора целевого объекта вы также устанавливаете конфигурацию выпуска для этого целевого объекта. Например, следующий пример — целевой объект trunk_staging :
lunch aosp_cf_x86_64_only_phone-trunk_staging-userdebug
Trunk staging — это конфигурация для тестирования перед выпуском в общую среду разработки, поскольку Google использует её для проверки функций перед общим релизом. В этой конфигурации в основном используются флаги READ_WRITE , позволяющие тестировать код с включенными или отключенными функциями во время выполнения.
При выпуске в общий доступ используйте конфигурацию выпуска . Конфигурация выпуска в основном использует флаги READ_ONLY и отражает весь код, включенный для данного выпуска.
Добавьте флаг в конфигурацию релиза trunk_staging.
Чтобы протестировать новый флаг, добавьте его в конфигурацию релиза trunk_staging следующим образом:
- Перейдите в каталог
WORKING_DIRECTORY /build/release/aconfig/trunk_staging/ - Создайте каталог с тем же именем пакета, что и ваш флаг, например,
com.example.android.aconfig.demo.flagsкак показано в разделе «Объявление флага aconfig для Java» . - Перейдите в новую директорию.
- В каталоге создайте файл значений флагов, который объединяет имя, используемое в файле объявления флага (
.aconfig), например,my_static_flag, как показано в разделе «Объявление флага aconfig для Java с помощью_flag_values.textproto». Полученное имя файла —my_static_flag_flag_values.textproto. Отредактируйте файл и добавьте
flag_valueаналогичный следующему:flag_value { package: "com.example.android.aconfig.demo.flags" name: "my_static_flag" state: DISABLED Permission: READ_WRITE }Где:
-
packageсодержит то же имя пакета, что и в объявлении. -
nameсодержит то же имя, что и в объявлении. -
stateлибоENABLED, либоDISABLED. -
permissionмогут быть либоREAD_WRITE, либоREAD_ONLY. Как правило, для файлов со значениями флагов, входящих в состав конфигурации выпуска,permissionустанавливаются наREAD_ONLY
-
Сохраните файл и закройте редактор.
В той же директории, где находится файл значений флагов, создайте файл сборки с именем
Android.bp. Этот файл используется для включения файла значений флагов в сборку.В файле
Android.bpсоздайте разделaconfig_values, аналогичный следующему: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", ] }Где:
-
name— это уникальное имя для модуля сборки Soong. Google использует соглашениеaconfig-values-platform_ PATH_TO_RELEASE_CONFIG_DIR - CONFIG_NAME - package.name -all. Это имя должно совпадать с именем, которое soong автоматически генерирует на основе объявленияaconfig_value_setв файлеAndroid.bpродительского каталога. Обратите внимание, чтоPATH_TO_RELEASE_CONFIG_DIR— этоbuild_release. -
packageсодержит то же имя пакета, что и в объявлении. -
srcs— это список всех файлов со значениями ваших флагов.
-
Сохраните файл и закройте редактор.
Перейдите в директорию, расположенную выше текущей (
cd ..)Соберите Android-приложение и запустите новый код, чтобы убедиться, что оно включено в соответствии с настройками в файле значений флагов.