機能リリース フラグの値を設定する

デフォルトでは、すべての機能のリリース フラグは 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_phone-trunk_staging-userdebug

トランク ステージングは、一般リリース前に機能をテストするために使用されるため、開発リリース構成です。この構成では、ほとんど READ_WRITE フラグを使用します。これにより、ランタイムで機能を有効または無効にしてコードをテストできます。

一般提供では、リリース リリース構成を使用します。リリース リリース構成は、ほとんどの場合 READ_ONLY フラグを使用し、そのリリースで有効になっているすべてのコードを反映します。

trunk_staging リリース構成にフラグを追加する

新しいフラグをテストするには、次のように trunk_staging リリース構成に追加します。

  1. WORKING_DIRECTORY/build/release/aconfig/trunk_staging/ までナビ開始
  2. フラグと同じパッケージ名のディレクトリを作成します(Java の aconfig フラグを宣言するcom.example.android.aconfig.demo.flags など)。
  3. 新しいディレクトリに移動します。
  4. このディレクトリに、フラグ宣言(.aconfig)ファイルで使用されている名前(Java の aconfig フラグを宣言するmy_static_flag など)と _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 は、ENABLEDDISABLED のいずれかです。
    • permissionREAD_WRITE または READ_ONLY です。通常、リリース構成の一部であるフラグ値ファイルの場合、permissionREAD_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_DIRbuild/release です。
    • package には、宣言で使用されたものと同じパッケージ名が含まれます。
    • srcs は、すべてのフラグ値ファイルのリストです。
  9. ファイルを保存して、エディタを終了します。

  10. 現在のディレクトリ(cd ..)の上のディレクトリに移動します。

  11. Android.bp ファイルを編集します。このビルドファイルには、各フラグ値ファイルに関連付けられている名前(name)のリストが含まれています。前のビルドファイル(ステップ 8)で使用した名前をこのリストに追加します。

  12. Android をビルドし、新しいコードを実行して、フラグ値ファイルの設定に従って有効になっていることを確認します。