首页 > 解决方案 > 覆盖库使用的 maxSdkVersion

问题描述

这是场景。我的应用程序 (A) 正在使用库 (B)。

我的应用 (A) 正在使用权限 READ_PHONE_STATE,它在 manifest.xml 中声明为

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

虽然库 (B) 也使用相同的权限 READ_PHONE_STATE,但 maxSdkVersion 设置为 22。

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="22"/>

所以现在的问题是当应用程序被构建并且在最终的_merged_manifest_中我设置了maxSdkVersion="22",因此我当前运行牛轧糖的设备无法请求这个特定的权限。

目前我在我的应用程序 (A) manifest.xml 中找到了覆盖此值的解决方案

<uses-permission
    tools:replace="android:maxSdkVersion"
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="28"/>

但这需要我每次在我的应用程序 (A) 中更新 sdk 版本时更新maxSdkVersion 。

所以我的问题是

  1. 有没有办法使用我 manifest.xml 中的一些命名空间来忽略库 (B) 设置的 maxSdkVersion,例如 tools:ignore
  2. 在 build.gradle 中自动将 maxSdkVersion 设置为最新的 sdkVersion,无需手动更改

标签: androidbuild.gradleandroid-manifest

解决方案


自行使用tools:remove属性AndroidManifest.xml

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:remove="android:maxSdkVersion"/>

推荐阅读