【问题标题】:Overriding Gradle Remote Dependency's targetSdkVersion in Android Studio在 Android Studio 中覆盖 Gradle 远程依赖的 targetSdkVersion
【发布时间】:2015-04-23 13:21:09
【问题描述】:

所以今天我们发布了一个应用程序,不幸的是我们没有注意到添加了一个新权限,即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'

我的问题

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

更新

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

【问题讨论】:

  • 您可以在 github 上 fork 库并删除您不需要的权限,然后将其添加到您的项目中。

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


【解决方案1】:

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

选择器

每个 tools:node 或 tools:attr 声明都可以增加一个 tools:selector 属性,它是关于是否或 不是合并策略应该应用于当前较低的 优先 XML 描述。例如,这在删除 仅在访问一个特定图书馆而不是任何图书馆时才获得许可 图书馆:

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

【讨论】:

猜你喜欢
  • 2021-02-10
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2015-01-25
相关资源
最近更新 更多