Android Gradle:buildToolsVersion与compileSdkVersion的区别

190
在Android项目的build.gradle文件中,buildtoolsVersioncompileSdkVersion有什么区别?具体来说,我想澄清一下构建工具是什么?

2
这是您要找的内容吗:https://developer.android.com/tools/revisions/build-tools.html - Reed
2个回答

235

compileSdkVersion是您编译应用程序所使用的Android API版本。

buildToolsVersion是编译器版本(aapt、dx、renderscript编译器等)的版本。对于每个API级别(从18开始),都有一个相应的.0.0版本。

在IO 2014上,我们发布了API 20和build-tools 20.0.0。

在Android版本之间,我们会发布编译器更新,因此我们将发布 .0.1、.0.2 等版本。由于我们不想在你的情况下偷偷更新这些版本,所以当方便时请您自行升级到新版本。

您可以使用比compileSdkVersion更高的build-tools版本,以获取新的/更好的编译器,同时不改变您构建应用程序所使用的API版本。


15
可以在较低的compileSdkVersion上使用较高的buildToolsVersion,例如使用20.0.0的buildToolsVersion在18.0.0的compileSdkVersion上编译是否可行? - Glide
6
@Glide 是的,构建工具将支持旧版本。 - Xavier Ducrohet
1
@XavierDucrohet 我需要指定buildToolsVersion吗?我记得在某个地方看到,最新的构建工具版本会自动选择。我尝试移除buildToolsVersion,但是Android Studio并不满意。 - Hong
12
谁有一个关于compileSdkVersion、buildToolsVersion、minSdkVersion和targetSdkVersion背后实际发生的事情的文档链接?我想要正确理解它。请帮助我翻译一下。 - powder366
2
@powder366 请查看Ian Lake的这篇有价值的文章:- https://medium.com/google-developers/picking-your-compilesdkversion-minsdkversion-targetsdkversion-a098a0341ebd#.2m2uy5ugy - maveroid
显示剩余3条评论

61

Android Studio 3.0 更新

现在自动选择版本,不再像之前那样需要知道精确的buildToolsVersion

文档中写道:

你不再需要为构建工具指定版本(所以,可以删除 android.buildToolsVersion 属性)。插件默认使用 Android 插件版本所需的最小构建工具版本。

查找精确版本号

我最初来到这里是想知道最新 Build Tools 版本的精确版本号(在需要手动更新时)。如果你仍然需要这样做,可以按照以下方式进行操作:

转到 工具 > SDK 管理器 > SDK 工具(选项卡)。从列表中选择 Android SDK 构建工具 并勾选 显示包详细信息。最后一项将显示最新版本。

进入图片描述

在上面的图像中,我可以看到我已经安装了 buildToolsVersion 27.0.3。有一个更新的rc(发布候选)版本,但我还没有安装它。当稳定版本发布时,我会安装它。


只是为了明确,在AS 3.2中,以上路径为“文件=>设置=>外观和行为....” - JL_SO
非常奇怪,如果不定义构建工具版本(AGP 4.1.1),我的发布构建会失败,并抱怨构建工具版本太低。 - Alireza Farahani

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