当 2 个库想要使用相同的权限时,Manifest Merger 失败
Manifest Merger fails when 2 libraries want to use the same permission
我们目前正在尝试将我们的系统更新到最新的 Android Studio/Gradle 工具,并且在过程中遇到了一些错误。
我们确实有 2 个库使用该权限。C2D_MESSAGE,即 Firebase 和 XtremePush。问题是,一旦我们想要构建我们的应用程序,Manifest Merger 就会失败,因为他无法完成合并并出现错误“No records found。(这是清单中的错误合并。)".
当我们调查这个问题时,我们发现了以下定义:
Firebase
<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" />
由于两个定义都在外部库中,我们无法设置合并规则或更改清单详细信息。此外,截至今天,这两个库都是最新的,因此在各自的开发人员方面似乎都没有解决方案。在我们的清单中设置权限也没有改变任何东西。
非常感谢!
在您的 Android 清单文件中添加:
<uses-sdk tools:overrideLibrary="com.example.firebase, com.example.xtremepush"/>
我首先找出哪些库会发生冲突,从而解决了这个问题。对我来说,它是包名 'ie.imobile.extremepush' 的 XtremePush 和包名 'com.google.firebase'.
的 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 Studio/Gradle 工具,并且在过程中遇到了一些错误。
我们确实有 2 个库使用该权限。C2D_MESSAGE,即 Firebase 和 XtremePush。问题是,一旦我们想要构建我们的应用程序,Manifest Merger 就会失败,因为他无法完成合并并出现错误“No records found。(这是清单中的错误合并。)".
当我们调查这个问题时,我们发现了以下定义:
Firebase
<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" />
由于两个定义都在外部库中,我们无法设置合并规则或更改清单详细信息。此外,截至今天,这两个库都是最新的,因此在各自的开发人员方面似乎都没有解决方案。在我们的清单中设置权限也没有改变任何东西。
非常感谢!
在您的 Android 清单文件中添加:
<uses-sdk tools:overrideLibrary="com.example.firebase, com.example.xtremepush"/>
我首先找出哪些库会发生冲突,从而解决了这个问题。对我来说,它是包名 'ie.imobile.extremepush' 的 XtremePush 和包名 'com.google.firebase'.
的 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"/>
..这样我的清单将覆盖两个清单,它们发生冲突并导致合并问题。这没问题,因为它们在功能上已经几乎相同。