当2个图书馆想要使用相同的权限时,Manifest Merger失败
我们正在尝试将我们的系统更新为最新的Android Studio/Gradle工具,并且在途中遇到了一些错误。当2个图书馆想要使用相同的权限时,Manifest Merger失败
我们有2个使用permission.C2D_MESSAGE的库,即Firebase和XtremePush。问题是,只要我们想构建我们的应用程序,Manifest Merger的构建失败,因为他无法完成合并,出现错误“找不到记录(这是合并清单中的错误)。 ”。
当我们观察到的问题,我们发现了以下定义:
火力地堡
<permission android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
XtremePush
<permission
android:name=".permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name=".permission.C2D_MESSAGE" />
由于这两个定义外部库,我们是不是可以设置合并规则或更改清单细节。而且,这两个库都是最新的,所以似乎在各自的开发者方面都没有解决方案。在我们的清单中设置权限也没有改变任何东西。
非常感谢!
我首先找出哪些库做冲突解决了这个问题。对于我来说,XtremePush的软件包名称为'ie.imobile.extremepush',Firebase的软件包名称为'com.google.firebase'。
然后我改变我的落实..
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature"
tools:overrideLibrary="com.google.firebase, ie.imobile.extremepush" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"
tools:overrideLibrary="com.google.firebase, ie.imobile.extremepush"/>
..所以,我的表现会超越这两个体现,这是发生冲突,并导致合并问题。这是没有问题的,因为它们在功能上已经几乎完全相同了。
在您的Android清单文件中加入:
<uses-sdk tools:overrideLibrary="com.example.firebase, com.example.xtremepush"/>
这不会影响'
你是对的,对我来说正确的解决方案是在最初的问题的意见。 – Essi
“我们无法设置合并规则或更改清单细节” - 在您自己的清单中定义元素并使用'tools:overrideLibrary',IIRC。 – CommonsWare
现在这两个属性(权限和使用权限)是正确的根目录-标志,我没有-标志,除了facebook库。我可以用库的包名创建另一个,并在那里添加overrideLibrary? –
Essi
您可以在清单中放入''和''元素,并根据需要进行配置,并在这些元素中包含'tools:overrideLibrary'。然后希望最好。 –
CommonsWare