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

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

对于我用最新的android studio开发的应用程序,我在gradle文件中使用了以下依赖项:

  1. dependencies {
  2. compile 'com.android.support:support-v4:21.0.+'
  3. compile 'com.helpshift:android-aar:3.7.1'
  4. }

这个 com.helpshift:android-aar:3.7.1 对于我在主应用程序中未使用的功能,库需要以下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 如这里所述,我可以重写导入库的activityxml声明中的属性。
但是,我是否也可以覆盖清单xml声明,比如前面提到的 uses-permission ?
我已经在我的主要舱单上尝试过类似的东西,但没有成功:

  1. <permission
  2. android:name="android.permission.WRITE_EXTERNAL_STORAGE"
  3. tools:node="remove"
  4. tools:selector="com.helpshift">
  5. </permission>

同时改变 <permission> 元素到 <uses-permission> 没有帮助。该应用程序仍要求获得访问sc卡的权限。
我的主androidmanifest.xml现在如下所示:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:installLocation="auto"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. package="com.bmi.rechner" >
  5. <uses-permission
  6. android:name="android.permission.WRITE_EXTERNAL_STORAGE"
  7. tools:node="remove"
  8. tools:selector="com.helpshift">
  9. </uses-permission>
  10. <uses-permission android:name="android.permission.INTERNET" />
  11. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  12. <uses-permission android:name="com.android.vending.BILLING" />
  13. <application
  14. ...

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

7jmck4yq

7jmck4yq1#

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

相关问题