在 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 上查看库的源代码后,我实际上可以看到它确实正确设置了 targetSdkVersion
和 minSdkVersion
,因此 [=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">
所以今天我们发布了一个应用程序,不幸的是我们没有注意到添加了新权限,即 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 上查看库的源代码后,我实际上可以看到它确实正确设置了 targetSdkVersion
和 minSdkVersion
,因此 [=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">