設定功能啟動旗標值

根據預設,所有功能發布標記都是 READ_WRITE,並設為 DISABLED。 如要測試功能,您必須先為標記建立標記值檔案,覆寫建構作業中使用的預設值。在旗標值檔案中,您可以設定個別旗標的狀態 (ENABLEDDISABLED) 和權限 (READ_WRITEREAD_ONLY)。

發布設定是包含特定 Android 建構版本所有旗標值檔案的目錄 (已啟用和停用特定功能)。

AOSP 隨附幾項發布設定,例如 trunk_staging。 版本設定目錄位於 WORKING_DIRECTORY/build/release/aconfig/ 下方。

使用 lunch 指令選擇目標時,您也會設定目標的發布設定。舉例來說,以下是 trunk_staging 目標:

lunch aosp_cf_x86_64_only_phone-trunk_staging-userdebug

主幹預先發布是開發版本設定,因為 Google 會先用這個版本測試功能,再正式發布。這項設定主要使用 READ_WRITE 標記,讓您在執行階段啟用或停用功能,藉此測試程式碼。

正式發布時,請使用發布版本設定。版本設定大多會使用 READ_ONLY 旗標,並反映該版本啟用的所有程式碼。

在 trunk_staging 版本設定中新增旗標

如要測試新旗標,請按照下列方式將其新增至 trunk_staging 發布設定:

  1. 導航到WORKING_DIRECTORY/build/release/aconfig/trunk_staging/
  2. 建立與旗標同名的套件,例如「com.example.android.aconfig.demo.flags」,如「為 Java 宣告 aconfig 旗標」所示。
  3. 前往新目錄。
  4. 在目錄中,建立旗標值檔案,並合併旗標宣告 (.aconfig) 檔案中使用的名稱,例如「my_static_flag」,如「為 Java 宣告 aconfig 旗標」一節所示。_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 包含聲明中使用的相同名稱。
    • stateENABLEDDISABLED
    • permissionREAD_WRITEREAD_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_DIRbuild/release
    • package 包含聲明中使用的相同套件名稱。
    • srcs 是所有旗標值檔案的清單。
  9. 儲存檔案並結束編輯器。

  10. 前往目前目錄的上層目錄 (cd ..)

  11. 編輯 Android.bp 檔案。這個建構檔案包含與每個旗標值檔案相關聯的名稱清單 (name)。將您在先前建構檔案 (步驟 8) 中使用的名稱新增至這個清單。

  12. 建構 Android,並執行新程式碼,確保程式碼已根據旗標值檔案中的設定啟用。