buildToolsVersion和compileSdkVersion已被弃用。

79
我刚刚注意到在一个库模块中,compileSdkVersionbuildToolsVersion最近已经被弃用。这是两个配置,它对此进行了抱怨(删除线文本)。目前这只影响com.android.library,而不是com.android.application
plugins {
    id "com.android.library"
}
android {
    defaultConfig {
        compileSdkVersion 31
        buildToolsVersion "31.0.0"
    }
}

Screenshot: build.gradle

点击进去后,你可能会注意到com.android.build.gradle.AndroidConfig已经被BaseExtension取代(不管对于匹配的build.gradle意味着什么):

Screenshot: Fernflower


显然,compileSdkVersion现在被称为compileSdk(这部分似乎有效)...而buildToolsVersion必须被定义为一个属性。但是在构建时(我并不是没有尝试过),属性buildToolsVerson = "31.0.0"是未知的。
android {
    defaultConfig {
        compileSdk 31
        buildToolsVersion = "31.0.0"
    }
}

如何在构建时避免出现弃用警告?
6个回答

51
如果您看到此错误 'compileSdkVersion' is deprecated 对于新的SDK 33:
apply plugin: 'com.android.application'

android {
   // compileSdkVersion 33
    defaultConfig {
        compileSdk 33
    }
...}

6
这个版本移除了我的警告。但是,我不明白其中的逻辑:对于"minSdkVersion"和"targetSdkVersion",后缀"Version"没问题(对我来说也很有意义)。但是在"compileSdkVersion"中,后缀"Version"就成了一个问题。难道谷歌的产品负责人吸毒了吗? - Jiří Křivánek
我已将"compileSDKversion"更改为"compile SDK",但buildToolsVersion = '30.0.3'仍然被弃用。我应该完全删除字符串"buildToolsVersion = '30.0.3'"吗? - bic55
6
嗨 @bic55,你可以安全地移除 buildToolsVersion = '30.0.3',因为根据文档:如果你使用的是 Gradle 3.0.0 或更高版本的 Android 插件,你的项目会自动使用插件指定的默认构建工具版本。 - Amc
1
@Amc,谢谢你提到文档。为了让其他人也能阅读,通常提供你找到它的链接会很有帮助。我相信你在这里找到了它:https://developer.android.com/build/releases/past-releases/agp-3-0-0-release-notes,但是措辞已经改变为:“Build Tools 26.0.2或更高版本。通过此更新,您不再需要为构建工具指定版本 - 插件默认使用最低所需版本。因此,您现在可以删除android.buildToolsVersion属性。” - undefined

25
它的构建方式如下(需要更改库模块):
plugins {
    id "com.android.application"
}
android {
    defaultConfig {
        compileSdkVersion 31
    }
}

plugins {
    id "com.android.library"
}
android {
    defaultConfig {
        // compileSdkVersion 31
        compileSdk 31
    }
}

12
如果您使用的是Gradle 3.0.0或更高版本的Android插件,就不再需要指定buildToolsVersion,因为您的项目会自动使用插件指定的构建工具默认版本。 - Amc
1
@Amc:在Android Studio中从来都不是必需的,但我更喜欢这样做以获得可复现的构建,并且我在某些机器上偶尔遇到了默认设置的问题(在99%的情况下它是有效的)。 - undefined

16
compileSdk 33
buildToolsVersion = '33.0.1'

1
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
3
我已将"compileSDKversion"更改为"compile SDK",但buildToolsVersion = '30.0.3'仍然已过时。 - bic55

7

如果您使用的是kts gradle文件(build.gradle.kts)

plugins {
    id("com.android.library")
}
android {
    defaultConfig {
        // compileSdkVersion 31
        compileSdk = 31
    }
}

5
apply plugin: 'com.android.application'

android {
    defaultConfig {
        buildToolsVersion = '30.0.3'
        compileSdk = 31
    }
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接