ChatGPT解决这个技术问题 Extra ChatGPT

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

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

https://i.stack.imgur.com/k7aH4.png

编辑(2014-02-27):

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

Android SDK Build-tools 曾经是 Android SDK Platform-tools 的组件。它们已与 Android SDK 平台工具分离,因此可以独立于集成开发环境 (IDE) 组件更新构建工具。

Android SDK 平台工具经过定制以支持最新 Android 平台的功能。它们向后兼容,因此您始终使用最新更新的 Android SDK 平台工具,即使您的应用程序针对的是较旧的 Android 平台。

SDK 工具与平台无关,无论您在哪个 Android 平台上开发都需要。

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


R
RevanthKrishnaKumar V.

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

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

Source

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

似乎没有解释所有构建工具的官方页面。这是 Android 团队对此的评价。

[build] 工具,例如aidl、aapt、dexdump 和dx,通常由Android 构建工具或Android 开发工具(ADT)调用,因此您很少需要直接调用这些工具。作为一般规则,您应该依赖构建工具或 ADT 插件来根据需要调用它们。

Source

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

Android SDK 工具 位置:$ANDROID_HOME/tools 主要工具:ant 脚本(用于构建您的 APK)和 ddms(用于调试)

位置:$ANDROID_HOME/tools

主要工具:ant 脚本(用于构建您的 APK)和 ddms(用于调试)

Android SDK Platform-tools 位置:$ANDROID_HOME/platform-tools 主要工具:adb(用于管理模拟器或Android设备的状态)

位置:$ANDROID_HOME/platform-tools

主要工具:adb(管理模拟器或安卓设备的状态)

Android SDK Build-tools 位置:$ANDROID_HOME/build-tools/$VERSION/ 文档主要工具:aapt(用于生成 R.java 和未对齐、未签名的 APK)、dx(将 Java 字节码转换为 Dalvik 字节码)和 zipalign(用于优化您的 APK)

位置:$ANDROID_HOME/build-tools/$VERSION/

文档

主要工具:aapt(生成 R.java 和未对齐、未签名的 APK)、dx(将 Java 字节码转换为 Dalvik 字节码)和 zipalign(优化您的 APK)


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

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

Android Build Tools 可用于从命令行或 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 版本。
S
Suragch

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

应该使用哪个版本?

答:使用最新版本。

对于使用带有 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 构建工具

检查显示包裹详细信息。

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

https://i.stack.imgur.com/p2WAE.png

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


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

您可以在此Android - Command Line Tools中找到有关这些的详细信息

tl;博士:

开发工具包工具:

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

构建工具:

签名者 proGuard zipalign jobb

平台工具:

adbaidl、aapt、dexdump 和 dx bmgr logcat


aidl、aapt、dexdump 和 dx 这些是构建工具的组件,而不是平台工具
k
kreker

正确答案是

将 Android SDK 的 build-specific 组件与 platform-tools 组件解耦,使 build 工具可以独立于集成开发环境 (IDE) 组件进行更新。

link (expand Revision 17)


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

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