在Android Studio

时间:2015-04-23 13:21:10

标签: android android-studio android-gradle pebble-watch pebble-sdk

所以今天我们发布了一个应用程序,但遗憾的是我们没有注意到添加了android.permission.READ_PHONE_STATE的新权限。

一些用户指出已在应用程序中添加了一个新的权限类别

  

设备ID&电话信息

     

阅读手机状态和身份

经过一番调查后,我发现这与上述许可有关,但我的任何一份清单都没有。搜索完我的项目后,我发现它包含在manifest-merger-release-report.txt中。

android:uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from AndroidManifest.xml:6:1 reason: com.getpebble.android.kit has a targetSdkVersion < 4

我不希望用户请求此权限,特别是如果它只是因为外部库没有设置其targetSdkVersion。

我使用以下内容将其作为模块的依赖项。

compile 'com.getpebble:pebblekit:2.6.0@aar'

我的问题

如何在无法访问targetSdkVersion文件的情况下覆盖图书馆AndroidManifest.xml

更新

在GitHub上查看库的源代码之后我实际上可以看到它确实正确设置了targetSdkVersionminSdkVersion,因此manifest-merger-release-report.txt中的提示符是不正确。

1 个答案:

答案 0 :(得分:1)

要覆盖来自库的'uses-permission'属性,您可以使用Selector

  

<强>选择

     

每个工具:节点或工具:attr声明可以通过增强   tools:selector属性,是关于是否的上下文信息   不应该将合并策略应用于当前较低的策略   优先级XML描述。例如,这在删除a时非常有用   只有来一个特定的图书馆才能获得许可   图书馆:

<permission
      android:name="permissionOne"
      tools:node="remove"
      tools:selector="com.example.lib1">