根據預設,所有功能發布標記都是 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 預先發布版本是開發版本設定,因為 Google 會使用這個版本測試功能,然後才正式發布。這項設定主要使用 READ_WRITE 標記,讓您在執行階段啟用或停用功能,藉此測試程式碼。
正式發布時,請使用發布版本設定。版本設定大多會使用 READ_ONLY 旗標,並反映該版本啟用的所有程式碼。
在 trunk_staging 版本設定中新增旗標
如要測試新旗標,請按照下列方式將其新增至 trunk_staging 發布版本設定:
- 導航到
WORKING_DIRECTORY/build/release/aconfig/trunk_staging/ - 建立與旗標同名的套件,例如「
com.example.android.aconfig.demo.flags」(如「為 Java 宣告 aconfig 旗標」所示)。 - 前往新目錄。
- 在目錄中,建立旗標值檔案,並合併旗標宣告 (
.aconfig) 檔案中使用的名稱,例如為 Java 宣告 aconfig 旗標中顯示的my_static_flag,並使用_flag_values.textproto。產生的檔案名稱為my_static_flag_flag_values.textproto。 編輯檔案,並新增類似下列內容的
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。
儲存檔案並結束編輯器。
在與旗標值檔案相同的目錄中,建立名為
Android.bp的建構檔案。這個檔案用於在建構作業中加入旗標值檔案。在
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 根據父項目錄Android.bp檔案中的aconfig_value_set宣告自動產生的名稱相符。請注意,PATH_TO_RELEASE_CONFIG_DIR是build_release。package包含聲明中使用的相同套件名稱。srcs是所有旗標值檔案的清單。
儲存檔案並結束編輯器。
前往目前目錄的上一層目錄 (
cd ..)建構 Android,然後執行新程式碼,確認已根據旗標值檔案中的設定啟用。