Установите значения флага запуска функции

По умолчанию все флаги запуска функций имеют 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 следующим образом:

  1. Перейдите в WORKING_DIRECTORY /build/release/aconfig/trunk_staging/
  2. Создайте каталог с тем же именем пакета, что и ваш флаг, например, com.example.android.aconfig.demo.flags , как показано в разделе Объявление флага aconfig для Java .
  3. Перейдите в новый каталог.
  4. В каталоге создайте файл значений флагов, который объединяет имя, используемое в файле объявления флагов ( .aconfig ), например my_static_flag , показанное в Объявление флага aconfig для Java с помощью _flag_values.textproto . Результирующее имя файла — my_static_flag_flag_values.textproto .
  5. Отредактируйте файл и добавьте 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 для файлов значений флагов, которые являются частью конфигурации выпуска.
  6. Сохраните файл и выйдите из редактора.

  7. В том же каталоге, где находится файл значений флагов, создайте файл сборки с именем Android.bp . Этот файл используется для включения файла значений флагов в сборку.

  8. В файле 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 — это список всех файлов значений флагов.
  9. Сохраните файл и выйдите из редактора.

  10. Перейдите в каталог, расположенный выше текущего каталога ( cd .. )

  11. Отредактируйте файл Android.bp . Этот файл сборки содержит список имен ( name ), связанных с каждым файлом значений флагов. Добавьте в этот список имя, которое вы использовали в предыдущем файле сборки (шаг 8).

  12. Соберите Android и запустите новый код, чтобы убедиться, что он включен в соответствии с настройками в файле значений флагов.