android - 在 Android Studio 中重写 Gradle Remote Dependency 的 targetSdkVersion

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

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

相关文章:

java - 在 Android Studio 中将 "java"目录重命名为 "kotlin"

安卓 Gradle 。如何将 Flavors 与 buildTypes 结合起来

android - 如何将 Google Play 服务修订版与安装版本匹配?

Android "singleTask"Activity 创建 Activity 的新实例

android - 如何在android滑动标签布局中对齐 Activity 标签中心

java - 更改进度条粗细和动画速度

android - 如何将github代码导入你的android studio项目

c# - 我可以使用什么技术为我的 C# 应用程序编写一个 View ?

java - 我的 Android 应用程序在 Eclipse 模拟器中运行,但不在我的设备上运行

java - 如何在适配器的顶部位置显示新项目?