0

有一点构建问题。

有一个需要 minSDK:23 的库,而我仍然想支持 21。

的解决方案

    <uses-sdk
    android:minSdkVersion="21"
    tools:overrideLibrary="a.rogue.library" />

不再同步并显示

minSdk 版本不应在 android 清单文件中声明。您可以将版本从清单移动到 build.gradle 文件中的 defaultConfig。 删除 minSdkVersion 并同步项目 受影响的模块:approot

奇怪的观察:同步失败但构建成功。此外,构建成功的同步也是如此。

但是,这是一种不健康的情况:

  • 如果我将该overrideLibrary行添加到清单中 - 它不会同步。
  • 如果我overrideLibrary从清单中删除该行 - 它当然不会构建,因为存在 minSDK 冲突。

有什么办法解决这个问题吗?overrideLibrary 可以以某种方式驻留在build.gradle?

谢谢

4

2 回答 2

1

我今天也遇到了这个问题,据我所知,它已作为Android Gradle 插件4.0.0版本的一部分引入(我仍在寻找参考),虽然起初看起来令人沮丧,但我认为这是正确的做法因为它实际上避免了一些潜在的运行时崩溃。(例如,当消费者调用库的 API 时,该 API 依赖于在较新的 SDK 版本中引入的其他 API,但无论如何我们都强制它变旧)

如果您负担得起,只需回到以前的稳定版本3.6.3,您现在就可以了,但是库开发人员选择了它minimumSdkVersion是有原因的。也许与他们联系以澄清其背后的理由并获得一些建议。祝你好运!

于 2020-06-08T12:16:32.623 回答
0

我只是这样做了,它奏效了。在应用程序级别的 build.gradle 文件中,只需确保在 defaultConfig 部分中指定“minSdkVersion #”,其中前面提到的 # 符号是您所针对的 SDK 编号。例子:

android {
compileSdkVersion 30
buildToolsVersion "29.0.2"
defaultConfig {
    applicationId "com.example.ranchhand1"
    minSdkVersion 23
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

}

于 2021-03-29T21:23:15.707 回答