По умолчанию все флаги запуска функций имеют 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.android.aconfig.test-all", package: "com.android.aconfig.test", srcs: [ "*_flag_values.textproto", ] }Где:
-
name— уникальное имя для модуля сборки Soong. Google использует соглашениеaconfig-values-platform_ PATH_TO_RELEASE_CONFIG_DIR - CONFIG-NAME - package.name -all. Обратите внимание, чтоPATH_TO_RELEASE_CONFIG_DIR— этоbuild/release. -
packageсодержит то же имя пакета, что и в объявлении. -
srcs— это список всех файлов значений флагов.
-
Сохраните файл и выйдите из редактора.
Перейдите в каталог, расположенный выше текущего каталога (
cd ..)Отредактируйте файл
Android.bp. Этот файл сборки содержит список имен (name), связанных с каждым файлом значений флагов. Добавьте в этот список имя, которое вы использовали в предыдущем файле сборки (шаг 8).Соберите Android и запустите новый код, чтобы убедиться, что он включен в соответствии с настройками в файле значений флагов.