android gradle清单合并:重写来自库的“uses permission”属性

vkc1a9a2  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(452)

对于我用最新的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" /> 如这里所述,我可以重写导入库的activityxml声明中的属性。
但是,我是否也可以覆盖清单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
        ...

更新:@commonware建议的答案是有效的。
只是我的问题 tools:selector="com.helpshift" 这是不对的。我之所以不提这个问题,是因为我确信我暂时不需要任何其他图书馆的许可。
他还提交了一个功能请求,以改进清单合并报告,这可能有助于在未来找到正确的选择器。

7jmck4yq

7jmck4yq1#

这将是一个 <uses-permission> 你想要的元素 remove ,不是 <permission> 元素。
请注意,如果您的应用程序没有此权限,库可能会崩溃。

相关问题