android - 为什么Android Gradle插件无法自动覆盖/忽略已弃用的SDK?

标签 android gradle android-gradle-plugin

假设您有一个使用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.33.2.1的最低要求。

关于android - 为什么Android Gradle插件无法自动覆盖/忽略已弃用的SDK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492578/

相关文章:

java - 从 firebase 中检索没有标签的 child

android - 由于 ModelClass 在 KotlinMultiplatform 应用程序中不是可序列化或可解析的,导致 nav_graph 参数错误

spring-boot - Gradle 5 JUnit BOM 和 Spring Boot 版本不正确

Android Gradle - 在特定的 productFlavor 上添加 packageNameSuffix

Android MediaPlayer 获取音量

android - 条件签名配置和构建类型?

gradle - 如何在多平台Kotlin/ native intellij项目中添加依赖项?

Android Studio Gradle 警告

android - Android Studio-想要1 APK,但无法正常工作

android - Flutter - 如何滚动到 ListView 的底部?