假设您有一个使用Android SDK 28和构建工具28的项目A28。
compileSdkVersion 28
buildToolsVersion '28.0.2'
此项目依赖于使用Android SDK 23和工具23.0.0的项目B23
构建A28时,构建将失败。而不是得到有用的错误,我得到的是一堆文件(B23中的所有文件)都丢失了并且无法链接(因为它不是通过gradle编译的,但是没有任何迹象)。
可能提示问题的唯一一件事是:
WARNING: The specified Android SDK Build Tools version (23.0.0) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.2.1. Android SDK Build Tools 28.0.3 will be used. To suppress this warning, remove "buildToolsVersion '23.0.0'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
但这明确表示,gradle将使用28.0.3工具版本而不是23.0.0编译该项目(B23)。
如果我加
subprojects {
afterEvaluate { project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 28
buildToolsVersion '28.0.2'
}
}
}
}
到我的
build.gradle
中,以便使用buildTools 28&sdk 28显式覆盖所有内容,构建成功。为什么会这样?我想念什么吗?较低的sdk和构建工具是否已被覆盖/忽略?
最佳答案
您可以从两个项目中完全删除buildToolsVersion
。这是因为将使用targetSdkVersion
的最新版本。甚至28.0.2
都低于Gradle插件28.0.3
的3.2.1
的最低要求。
关于android - 为什么Android Gradle插件无法自动覆盖/忽略已弃用的SDK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492578/