Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓清单:Can';不要再强迫明斯克了&引用;不应在android清单文件中声明;_Android_Build_Build.gradle_Android Manifest_Android Min Sdk - Fatal编程技术网

安卓清单:Can';不要再强迫明斯克了&引用;不应在android清单文件中声明;

安卓清单: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并同步项目 受影响模块:批准 奇

有个小问题

得到了一个需要minSDK:23的lib,而我仍然想要支持21

解决

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

不再同步并显示

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

奇怪的观察:同步失败,但构建成功。此外,在构建成功后同步

但这是一种不健康的状况:

  • 如果我将
    overrideLibrary
    行添加到清单中,它将不会同步
  • 如果我从清单中删除
    overrideLibrary
    行,它当然不会生成,因为存在minSDK冲突
有办法解决这个问题吗?重写库能否以某种方式驻留在
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级别大于其最小值。