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

标签 android sdk android-sdk-tools

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

enter image description here

已编辑 (2014-02-27):

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

  • Android SDK Build-tools 曾经是 Android SDK Platform-tools 的组件。它们已与 Android SDK 平台工具分离,因此可以独立于集成开发环境 (IDE) 组件更新构建工具。
  • Android SDK 平台工具经过定制,可支持最新 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 能够通过提供一两个示例来更好地解释这一点,说明为什么工具中的这些错误对某些应用程序至关重要。

最佳答案

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

By default, the Android SDK uses the most recent downloaded version of the Build Tools.

Source

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

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

The [build] tools, such as aidl, aapt, dexdump, and dx, are typically called by the Android build tools or Android Development Tools (ADT), so you rarely need to invoke these tools directly. As a general rule, you should rely on the build tools or the ADT plugin to call them as needed.

Source

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

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

关于android - 什么是 Android SDK 构建工具、平台工具和工具?应该使用哪个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911762/

相关文章:

android - 对话框中的样式 titleDivider

java - setText 方法无法正常工作?

android - 用于精细导航的免费 SDK

android - android SDK版本之间的区别

javascript - 如何在浏览器中使用podio-js(没有Node.js)?

java - 私有(private)方法上的 Android Fragment NullPointerException

java - 我知道如何通过按钮打开相机,但我不知道如何更改拍摄照片的位置,我该怎么做?

android - 在 ADT 插件更新后,所有使用某种库的 Android 项目都会抛出 ClassNotFoundException

android - 如何配置 Androids sdkmanager 命令行工具以使用自定义存储库?

java - Android SDK 管理器启动问题?