在 Android Studio 中覆盖 Gradle 远程依赖的 targetSdkVersion

Overriding Gradle Remote Dependency's targetSdkVersion in Android Studio

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

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

Device ID & call information

read phone status and identity

经过一番调查后,我发现这与上述许可相关联,但我的任何清单中都没有。在搜索我的项目后,我发现它包含在 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'

我的问题

如何在不访问库的 AndroidManifest.xml 文件的情况下覆盖库的 targetSdkVersion

更新

在 GitHub 上查看库的源代码后,我实际上可以看到它确实正确设置了 targetSdkVersionminSdkVersion,因此 [=19= 中的提示] 不正确。

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

Selector

Each tools:node or tools:attr declaration can be augmented by a tools:selector attribute which is contextual information on whether or not the merging strategy should be applied to the current lower priority XML description. For instance, this is useful when removing a permission only if coming for one particular library as opposed to any library:

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