覆盖库使用的maxSdkVersion

时间:2019-02-10 11:33:48

标签: android build.gradle android-manifest

这是场景。我的应用程序(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中的某些命名空间(如tools:ignore)来忽略库(B)设置的maxSdkVersion
  2. 自动将build.gradle中的maxSdkVersion设置为最新的sdkVersion,无需手动更改

1 个答案:

答案 0 :(得分:3)

在您自己的tools:remove上使用AndroidManifest.xml属性:

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