【发布时间】:2020-06-04 03:54:43
【问题描述】:
有一点构建问题。
有一个需要 minSDK:23 的库,而我仍然想支持 21。
解决办法
<uses-sdk
android:minSdkVersion="21"
tools:overrideLibrary="a.rogue.library" />
不再同步并显示
不应在 android 清单文件中声明 minSdk 版本。您可以将版本从清单移动到 build.gradle 文件中的 defaultConfig。 删除 minSdkVersion 并同步项目 受影响的模块:approot
奇怪的观察:同步失败但构建成功。此外,在构建成功后同步。
不过,这是一种不健康的情况:
- 如果我将
overrideLibrary行添加到清单 - 它不会同步。 - 如果我从清单中删除
overrideLibrary行 - 它当然不会构建,因为存在 minSDK 冲突。
有什么办法解决吗? overrideLibrary 可以以某种方式驻留在build.gradle 中吗?
谢谢
【问题讨论】:
-
我认为您正在导入旧项目,对吗?
-
不,我的应用是在 Gradle 中从头开始构建的。我想导入一个 aar,但那个 aar 迫使我停止支持 21,22,我宁愿不这样做 :-(
-
你在 gradle 中添加了 minSdkVersion 21 吗?
-
当然。这就是冲突的原因。你知道,Manifest 合并试图决定在最终清单中放入哪个版本。根模块 min SDK 小于 lib 的 SDK => 您请求应用程序支持您的 SDK 不支持的版本。如果它设置最大值,它“不服从”您的 minSDK 请求。如果它强制最小值 - 您的应用程序可能会在运行时中断,您甚至都不知道。这是冲突!顺便说一句,相反的方向是有效的,因为这些库会自动支持高于其最小值的 API 级别。
标签: android build build.gradle android-manifest android-min-sdk