安卓清单:Can';不要再强迫明斯克了&引用;不应在android清单文件中声明;
有个小问题 得到了一个需要minSDK:23的lib,而我仍然想要支持21 解决安卓清单:Can';不要再强迫明斯克了&引用;不应在android清单文件中声明;,android,build,build.gradle,android-manifest,android-min-sdk,Android,Build,Build.gradle,Android Manifest,Android Min Sdk,有个小问题 得到了一个需要minSDK:23的lib,而我仍然想要支持21 解决 <uses-sdk android:minSdkVersion="21" tools:overrideLibrary="a.rogue.library" /> 不再同步并显示 不应在android清单文件中声明minSdk版本。您可以将版本从清单移动到build.gradle文件中的defaultConfig。 删除minSdkVersion并同步项目 受影响模块:批准 奇
<uses-sdk
android:minSdkVersion="21"
tools:overrideLibrary="a.rogue.library" />
不再同步并显示
不应在android清单文件中声明minSdk版本。您可以将版本从清单移动到build.gradle文件中的defaultConfig。
删除minSdkVersion并同步项目
受影响模块:批准
奇怪的观察:同步失败,但构建成功。此外,在构建成功后同步
但这是一种不健康的状况:
- 如果我将
行添加到清单中,它将不会同步overrideLibrary
- 如果我从清单中删除
行,它当然不会生成,因为存在minSDK冲突overrideLibrary
build.gradle
中
谢谢我今天也遇到了这个问题,据我所知,它是作为Android Gradle插件的
4.0.0
版本的一部分引入的(我仍在搜索参考资料),虽然一开始看起来令人沮丧,但我认为这是正确的做法,因为它实际上避免了一些潜在的运行时崩溃。(例如,当消费者调用库的API时,该库依赖于在较新SDK版本中引入的其他API,但我们已强制其使用较旧的API)
如果您负担得起,只需返回到以前的稳定版本
3.6.3
,您现在就可以了,但是库开发人员选择minimumSdkVersion
是有原因的。也许可以联系他们,澄清背后的理由,并获得一些建议。祝你好运 我刚刚做了这个,它成功了。在app-level 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'
}
}
}我想你是在导入旧项目,对吗?不,我的应用程序是从零开始在Gradle中构建的。我想导入aar,但aar迫使我停止支持21,22,我不想这样做:-(您是否在gradle中添加了minSdkVersion 21?当然。这就是冲突的原因。您知道,清单合并试图决定将哪个版本放入最终清单中。根模块min SDK小于库的SDK=>您请求应用程序支持SDK不支持的版本。如果它将最大值放入,则它“不遵守”你的minSDK请求。如果它强制min-你的应用程序可能在运行时中断,你甚至不知道。这是一个冲突!顺便说一句,相反的方向起作用,因为LIB自动支持的API级别大于其最小值。