组件化引用极光推送,每个组件的build.gradle都需要写manifestPlaceholders
我通过组件化来架构我的项目,壳工程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,这是为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用
manifestPlaceholders
最终会把配置的 参数 写入到AndroidManifest
中,你 在 A 和 B 中应该依赖了C 吧,这样 编译 AB 也得要求 在 gradle 中添加,不然就会找不到。同求答案,今天我也遇到这个问题了,用的个推
这个问题可能需要转变一下思路,组件A、组件B真正依赖的并不是推送,而是推送的内容,因此可以把第三方推送的依赖放在app壳工程,由壳来负责维护推送注册、注销、接收消息,再自己制定一套接口,由壳工程向子模块转发推送的消息,子模块自行对消息进行过滤,从而解除子模块对第三方推送包的直接依赖
你好 请问这个问题解决了吗 我也遇到了这个问题
基础库中 使用 implementation 方式 广播接收器写在在基础库中 收到消息通过eventBus发送到对应的业务modules
requires a placeholder substitution but no value for <GETUI_APP_ID> is provided
朋友,你这个报错是个推的,不是JPush的
哥们你那个组件化极光推送怎么解决了,我qq934419484