Android Gradle 清单合并:覆盖来自库的 'uses-permission' 属性
Android Gradle Manifest Merger: Override 'uses-permission' attribute coming from a library
对于我使用最新 Android Studio 开发的应用程序,我在 gradle 文件中使用此依赖项:
dependencies {
compile 'com.android.support:support-v4:21.0.+'
compile 'com.helpshift:android-aar:3.7.1'
}
com.helpshift:android-aar:3.7.1
库需要以下权限才能使用我的主应用程序中未使用的功能:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
如所述 and here 我可以覆盖导入库的 activity XML 声明中的属性。
但我是否也可以覆盖 manifest XML 声明,如提到的 uses-permission
?
我已经在我的主清单中尝试过类似的方法,但没有成功:
<permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove"
tools:selector="com.helpshift">
</permission>
同时将 <permission>
元素更改为 <uses-permission>
也没有帮助。 该应用程序仍然请求访问 SC 卡的权限。
我的主要 AndroidManifest.xml 现在看起来像这样:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
xmlns:tools="http://schemas.android.com/tools"
package="com.bmi.rechner" >
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove"
tools:selector="com.helpshift">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<application
...
更新:
@CommonsWare 建议的答案有效。
只是我的 tools:selector="com.helpshift"
不正确。我将其排除在外,因为我确定我暂时不需要任何其他图书馆的许可。
他还提交了 feature request 以改进清单合并报告,这可能有助于在未来找到合适的选择器。
你会 remove
的 <uses-permission>
元素,而不是 <permission>
元素。
请注意,如果您的应用没有此权限,库可能会崩溃。
对于我使用最新 Android Studio 开发的应用程序,我在 gradle 文件中使用此依赖项:
dependencies {
compile 'com.android.support:support-v4:21.0.+'
compile 'com.helpshift:android-aar:3.7.1'
}
com.helpshift:android-aar:3.7.1
库需要以下权限才能使用我的主应用程序中未使用的功能:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
如所述
但我是否也可以覆盖 manifest XML 声明,如提到的 uses-permission
?
我已经在我的主清单中尝试过类似的方法,但没有成功:
<permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove"
tools:selector="com.helpshift">
</permission>
同时将 <permission>
元素更改为 <uses-permission>
也没有帮助。 该应用程序仍然请求访问 SC 卡的权限。
我的主要 AndroidManifest.xml 现在看起来像这样:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
xmlns:tools="http://schemas.android.com/tools"
package="com.bmi.rechner" >
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove"
tools:selector="com.helpshift">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<application
...
更新: @CommonsWare 建议的答案有效。
只是我的 tools:selector="com.helpshift"
不正确。我将其排除在外,因为我确定我暂时不需要任何其他图书馆的许可。
他还提交了 feature request 以改进清单合并报告,这可能有助于在未来找到合适的选择器。
你会 remove
的 <uses-permission>
元素,而不是 <permission>
元素。
请注意,如果您的应用没有此权限,库可能会崩溃。