覆盖库使用的 maxSdkVersion

cap*_*wag 7 android android-manifest build.gradle

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

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

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)

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

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="22"/>
Run Code Online (Sandbox Code Playgroud)

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

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

<uses-permission
    tools:replace="android:maxSdkVersion"
    android:name="android.permission.READ_PHONE_STATE"
    android:maxSdkVersion="28"/>
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是

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

Sdg*_*emi 14

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

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:remove="android:maxSdkVersion"/>
Run Code Online (Sandbox Code Playgroud)