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

По умолчанию все флаги запуска функций имеют 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.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 — это список всех файлов со значениями ваших флагов.
  9. Сохраните файл и закройте редактор.

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

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