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

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

Trunk staging は開発用リリース構成であり、Google はこれを利用して一般リリース前に機能をテストします。この構成では主に 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 のいずれかです。
    • permission は、READ_WRITEREAD_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 をビルドして新しいコードを実行し、フラグ値ファイルの設定どおりに有効になっていることを確認します。