覆盖库使用的 maxSdkVersion

Override maxSdkVersion used by library

场景如下。我的应用程序 (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"/>

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

所以我的问题是

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

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

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