Java Android Gradle清单合并:覆盖';使用权限';来自库的属性
对于我用最新的Android Studio开发的应用程序,我在其gradle文件中使用了以下依赖项:Java Android Gradle清单合并:覆盖';使用权限';来自库的属性,java,android,gradle,android-studio,manifest,Java,Android,Gradle,Android Studio,Manifest,对于我用最新的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库需要以下权限才能使用我在主应用程序中不使用的功能: 如前所述,我可以覆盖导入库的活动XML声明中的属
dependencies {
compile 'com.android.support:support-v4:21.0.+'
compile 'com.helpshift:android-aar:3.7.1'
}
com.helpshift:android aar:3.7.1
库需要以下权限才能使用我在主应用程序中不使用的功能:
如前所述,我可以覆盖导入库的活动XML声明中的属性
但是我是否也可以覆盖清单XML声明,如前面提到的使用权限
我已经在我的主要舱单中尝试过类似的方法,但没有成功:
<permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove"
tools:selector="com.helpshift">
</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
...
改进清单合并报告,这可能有助于在将来找到正确的选择器。您将删除元素,而不是
元素
请注意,如果您的应用程序不具有此权限,库可能会崩溃。谢谢,但将元素更改为没有帮助。该应用程序仍要求获得访问SC卡的权限。我是否在清单文件的正确元素中使用了它?我刚刚完全删除了tools:selector=“com.helpshift”
,现在它似乎正在工作。现在应该可以了吧?顺便说一句,图书馆有一个应用程序内聊天,用户可以附加屏幕截图。现在这已经不起作用了,但它比那些认为我只是想获取他们的个人数据的用户的一星级评级要好。:)@sdeff:如果您临时注释掉对权限的覆盖,则清单合并报告应告诉您从何处获取写入外部存储
权限,这可能会为您提供一些线索,说明选择器
不起作用时为什么com.helpshift
。或者,如果你确定你永远都不需要这个权限,就不要使用选择器
。@sdeff:是的,我被难住了。我已经申请让清单合并报告在此处提供更多信息。FWIW,我尝试使用选择器,可以看到“使用权限…拒绝自”,但该权限仍然存在于生成的APK中。删除选择器将导致相同的输出,但是APK不再具有该权限。明显的窃听行为。