所以今天我们发布了一个应用程序,不幸的是我们没有注意到添加了一个新的权限,即 android.permission.READ_PHONE_STATE
。
一些用户指出应用程序中添加了一个新的权限类别
Device ID & call information
read phone status and identity
经过一番调查后,我发现这与上述许可相关联,但我的任何 list 中都没有。在搜索我的项目后,我发现它包含在 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
设置正确,因此 manifest 中的提示-merger-release-report.txt
不正确。
最佳答案
要覆盖来自库的“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 - 在 Android Studio 中重写 Gradle Remote Dependency 的 targetSdkVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824758/