作用
一般用于数据的个性化配置,在build.gradle里配置该属性,可以在代码中获取对应的值
如何使用
- 在AndroidManifest里声明
<meta-data
android:name="KIMMY"
android:value="${KIMMY}"/>
name是key,代码中根据该名去获取
value是指,在build.gradle的manifest里面去使用
2.在build.gradle赋值
defaultConfig {
manifestPlaceholders = [
KIMMY :"default"
PENNY:"额外的数据,不会被覆盖"
]
}
buildTypes {
release {
manifestPlaceholders = [
KIMMY :"release模式生效"
]
}
debug {
manifestPlaceholders = [
KIMMY :"debug模式生效"
]
}
- 代码里使用
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
Log.d("测试", "kimmy=" + appInfo.metaData.getString("KIMMY"));
使用环境
比如我们的推送插件被三个产品共同应用,每个产品定义自己的AppKey,那么在插件里面的AppKey,在三个项目里是不一样的。项目里面,友盟统计、极光推送都是这样的用法

额外注意点
manifestPlaceholders 可以定义在三处 defaultConfig 、release 、debug 。
打包的时候,defaultConfig里的数组和release或者debug里manifestPlaceholders 的数据,都会被添加到项目里。
如果遇到key重名的,debug或者release会覆盖defaultConfig的值。
因此利用这个覆盖的特性,我们可以在defaultConfig 里定义友盟、极光的key,在debug 下把友盟的key设置为空,达到开发模式下不统计崩溃错误的目的
网友评论