什么是 Android SDK 构建工具、平台工具和工具?应该使用哪个版本?

Posted

技术标签:

【中文标题】什么是 Android SDK 构建工具、平台工具和工具?应该使用哪个版本?【英文标题】:What are the Android SDK build-tools, platform-tools and tools? And which version should be used? 【发布时间】:2013-11-23 13:46:34 【问题描述】:

我知道这是一个非常初级的问题,但令我惊讶的是,我找不到任何关于 android SDK Build-tools 的文档。 除了 Android SDK Tools 和 Android SDK Platform-tools,还有一堆 Android SDK Build-tools 如附加的屏幕截图所示。谁能指出解释所有这些的来源并帮助澄清如何选择使用某个版本的 Android SDK 构建工具?

已编辑 (2014-02-27)

我仍然没有完全理解所有的工具。以下是我根据谷歌最新文档的有限理解:

Android SDK Build-tools 曾经是 Android SDK Platform-tools 的组件。它们已与 Android SDK 平台工具分离,因此可以独立于集成开发环境 (IDE) 组件更新构建工具。 Android SDK Platform-tools 为支持最新 Android 平台的功能而定制。它们向后兼容,因此您始终使用最新更新的 Android SDK 平台工具,即使您的应用针对的是较旧的 Android 平台。 SDK 工具 独立于平台,无论您在哪个 Android 平台上开发都需要。

我仍然不明白从 Android SDK Platform-tools 中取出 Android SDK Build-tools 的理由,因为它只有一个实例并且易于管理更新.我能想到的唯一可能的原因是某些应用程序必须依赖较旧的构建组件来构建它们。谷歌的文件提到了这一点,但没有解释原因。查看发行说明,您会注意到 Android SDK 构建工具 的更新主要用于修复错误或/添加对新平台的支持。我能想到的一些应用使用旧版本的 Android SDK Build-tools 的唯一原因是它们依赖于 Android SDK Build-tools 的某些错误。如果没有这些错误,这些应用程序将无法正常运行。我希望 Google 能够通过提供一两个示例来更好地解释这一点,说明为什么工具中的这些错误对某些应用程序至关重要。

【问题讨论】:

【参考方案1】:

关于Android SDK Build-tools的版本,答案是

默认情况下,Android SDK 使用最新下载的版本 构建工具。

Source

在 Eclipse 中,您可以使用project.properties 文件中的sdk.buildtools 属性来选择特定版本。

似乎没有解释所有构建工具的官方页面。以下是 Android 团队对此的看法。

aidl、aapt、dexdump 和 dx 等 [build] 工具是 通常由 Android 构建工具或 Android Development 调用 工具 (ADT),因此您很少需要直接调用这些工具。作为一个 一般规则,您应该依靠构建工具或 ADT 插件来 根据需要给他们打电话。

Source

无论如何,这里是工具、平台工具和构建工具之间差异的综合:

Android SDK 工具 位置:$ANDROID_HOME/tools 主要工具:ant 脚本(用于构建您的 APK)和ddms(用于调试) Android SDK 平台工具 位置:$ANDROID_HOME/platform-tools 主要工具:adb(用于管理模拟器或 Android 设备的状态) Android SDK 构建工具 位置:$ANDROID_HOME/build-tools/$VERSION/ Documentation 主要工具:aapt(用于生成 R.java 和未对齐、未签名的 APK)、dx(用于将 Java 字节码转换为 Dalvik 字节码)和zipalign(用于优化您的 APK)

【讨论】:

我很高兴有不同构建工具版本的更改日志 @lacton 我为我的项目使用了旧的构建工具(版本 17)。我可以用最新的构建工具重新构建它吗? 我们可以为 eclipse 和 studio 使用相同的 sdk + 构建工具吗? 我们如何通过命令行安装构建工具【参考方案2】:

Android SDK 构建工具用于调试、构建、运行和测试 Android 应用程序。

Android 构建工具可用于从命令行或 IDE(即 Eclipse 或 Android Studio)进行开发和工作。

还用于连接 Android 设备并对其进行 root。(fastboot、adb 等..)

始终使用最新的。(推荐)

More Info on Android Build tools and commands

【讨论】:

感谢您的信息。您的意思是 Android Build Tools 是“用于连接 Android 设备并对其进行 root”吗? adbis 是 Android 平台工具的一部分。 adb 是否依赖 Android 构建工具才能运行?如果是这样,怎么做?我很好奇。 adb 可用于从命令行推送和拉取文件。 (更多功能。)fastboot 可用于刷新自定义引导加载程序。但是,这些命令对 Android 开发没有用处,除非您使用终端进行开发。一切都在 IDE 本身中可用。 我的理解是Eclipse在后台使用adb.exe。 @mipreamble 那么android sdk:工具、平台工具和构建工具有什么区别?我可以在没有构建工具的情况下构建和运行我的应用程序。 @CJBS 是的。坚持一个版本的设置工具将起作用。构建工具会随着新版 Android 的推出而更新。您可能需要针对最新的 Android 版本编译和测试应用程序。【参考方案3】:

我将把构建工具、平台工具和工具之间的区别的讨论留给其他人。从实际的角度来看,您只需要知道第二个问题的答案:

应该使用哪个版本?

答案:使用最新版本。

对于使用带有 Gradle 的 Android Studio 的用户,必须在 build.gradle(模块:app)文件中设置 buildToolsVersion

android 
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...

我在哪里可以获得构建工具的最新版本号?

打开 Android SDK 管理器。

在 Android Studio 中转到 工具 > Android > SDK 管理器 > 外观和行为 > 系统设置 > Android SDK 选择SDK 工具 标签。 从列表中选择Android SDK Build Tools 检查显示包裹详情

最后一项将显示最新版本。

确保已安装,然后将该编号作为buildToolsVersion 写入build.gradle(模块:app)。

【讨论】:

如果有 24.0.2,为什么 24.0.1 和 24 没有标记为过时(独立管理器允许显示/隐藏过时的包)? @user1803551,自动使用最新的构建工具版本并不总是可取的。例如,假设您已经使用特定的构建工具版本彻底测试了您的应用程序。如果您更新构建工具,那么那里的更改可能会破坏您的应用程序中的某些内容。允许开发人员继续使用旧的构建工具版本可以确保他们的构建将继续按预期工作。如果您查看声明过时的模式,您会发现 24 和 24.0.1 最终将被声明为过时。【参考方案4】:

您可以在此Android - Command Line Tools

中找到有关这些的详细信息

tl;博士:

SDK 工具:

    Android SDK 管理器 (sdkmanager) AVD 管理器 (avdmanager) Dalvik 调试监控服务器 (ddms)

构建工具:

    签名者 proGuard 压缩对齐 乔布斯

平台工具:

    亚行 aidl、aapt、dexdump 和 dx bmgr 日志猫

【讨论】:

aidl、aapt、dexdump 和 dx 这些是构建工具的组件,而不是平台工具【参考方案5】:

正确答案是

将 Android SDK 的构建特定组件与 platform-tools 组件解耦,以便可以独立于集成开发环境 (IDE) 组件更新构建工具。

link (expand Revision 17)

【讨论】:

感谢您提供的信息。如果新版本只是改进旧版本,为什么 Google 不只有一个 Build-tools 并像 SDK Tools 和 Platform-tools 一样不断更新它?换句话说,那里有旧版本的原因是什么? 我只是想为这个答案投票,但事实证明我去年已经投票了! @Hong,他们保留旧的构建工具,因为随着他们更新工具,某些功能已被弃用。但应用程序开发人员可能拥有依赖于这些功能的源代码,因此他们保留旧版本以支持这些旧代码库。 在这种情况下,他们是否应该列出已弃用的功能,以便开发人员可以准确地知道他们是否还必须使用旧版本? @Hong:这正是我要找的问题。现在...开始寻找答案:)【参考方案6】:

Android SDK 构建工具正如其名;用于构建 Android 应用程序的工具。使用最新的构建工具版本(由您的 IDE 通过 Android SDK 自动选择)非常重要,但保留旧版本的原因是为了支持向后兼容性,即如果您的项目依赖于旧版本的构建工具。

【讨论】:

以上是关于什么是 Android SDK 构建工具、平台工具和工具?应该使用哪个版本?的主要内容,如果未能解决你的问题,请参考以下文章

android sdk啥作用

android的sdk啥意思

Android SDK工具(亚博体育提供的16个工具)简介

APP测试-SDK环境以及adb for Windows

安装安卓平台里的JDK.SDK.ADT.的全称是啥,又是啥意思?

无法从 SDK 管理器安装“Android SDK 平台工具”