默认情况下,所有功能启动标记均为 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
发布配置
- 导航到
WORKING_DIRECTORY/build/release/aconfig/trunk_staging/
- 创建一个目录,其包名称与您的标记相同,例如 为 Java 声明 aconfig 标记中显示的
com.example.android.aconfig.demo.flags
。 - 导航到新目录。
- 在该目录中,创建一个标记值文件,该文件将标记声明 (
.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.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_DIR
是build/release
。package
包含声明中使用的相同包名称。srcs
是所有标记值文件的列表。
保存文件并退出编辑器。
导航到当前目录之上的目录 (
cd ..
)编辑
Android.bp
文件。此构建文件包含与每个标记值文件关联的名称 (name
) 列表。将您在上一个构建文件(步骤 8)中使用的名称添加到此列表。构建 Android,并运行您的新代码,以确保它按照标记值文件中的设置启用。