我通过组件化来架构我的项目,壳工程app,依赖组件A和组件B以及基础库C。工程当中需要用到极光推送,因此我在基础库C的build.gradle中加入了
compile 'cn.jiguang.sdk:jpush:3.0.9'
compile 'cn.jiguang.sdk:jcore:1.1.7'
同时根据极光SDK的要求,在基础库C的build.gradle中添加了
manifestPlaceholders = [
JPUSH_PKGNAME: "com.qsjh.test",
JPUSH_APPKEY : "6pl2c1qloa69ad60061709md", // 我随便写的,不是真实APPKEY
JPUSH_CHANNEL: "developer-default",
]
但是编译之后报错:
Error:Execution failed for task ':moduleA:processDebugAndroidTestManifest'.
> Manifest merger failed with multiple errors, see logs
F:\addroidStudioPrjs\TestApp\moduleA\build\intermediates\manifest\tmp\manifestMerger8803862843345368556.xml Error:
Attribute meta-data#PUSH_APPID@value at manifestMerger8803862843345368556.xml requires a placeholder substitution but no value for <JPUSH_APPKEY> is provided.
必须在组件A和组件B的build.gradle文件里也加上同样的这个manifestPlaceholders,但是组件A和组件B的build.gradle中并没有依赖极光SDK,只是依赖了基础库C,这是为什么?
使用
manifestPlaceholders
最终会把配置的 参数 写入到AndroidManifest
中,你 在 A 和 B 中应该依赖了C 吧,这样 编译 AB 也得要求 在 gradle 中添加,不然就会找不到。