SDK Build Tools 版本说明

Android SDK Build-Tools 是构建 Android 应用所需的一个 Android SDK 组件,安装在 <sdk>/build-tools/ 目录中。

您应保持更新 Build Tools 组件,可以使用 Android SDK 管理器下载该组件的最新版本。如果您使用的是 Android Plugin for Gradle 3.0.0 或更高版本,那么您的项目会自动使用该插件指定的默认版本的 Build Tools。如需使用其他版本的 Build Tools,请在模块的 build.gradle 中使用 buildToolsVersion 进行指定,如下所示:

GroovyKotlin
android {
    buildToolsVersion "34.0.0"
    ...
}
android {
    buildToolsVersion = "34.0.0"
    ...
}

修订版本

下面几部分提供了关于 Build Tools 各个版本的说明。如需确定 SDK 中提供了 Build Tools 的哪些修订版本,请参阅 Android SDK 管理器中列出的“已安装软件包”。

Build Tools,修订版 34.0.0 RC3(2023 年 4 月)

进行了一些常规的问题修复和改进。

此更新支持使用 Android 14 预览版 API 进行构建。

此更新修复了以下问题:

  • core-lambda-stubs.jar 版本 33.0.0 在 macOS 与在 Linux/Windows 上有所不同。 (请参阅问题 237299698。)

此更新修复了以下问题:

此更新支持使用 Android 11 预览版 API 进行构建。

此更新修复了以下问题:

  • macOS Catalina 上 Renderscript 的 build 问题。(请参阅问题 142590626

此更新修复了以下问题:

此更新支持使用 API 级别 29 进行构建。

此更新加入了对 Android Gradle 插件 3.2.0 的支持,并修复了以下问题:

  • 修复了导致应用在调用 androidx.renderscript.RenderScript.create() 时崩溃的 JNI 库 bug。
  • 修复了导致 androidx.annotation 资源出现 Program type already present build 错误的 bug。

加入了最新版 D8

改进了对编译 lambda 的支持(在启用 Java 8 语言功能的情况下)。

改进了对 Java 8 语言功能的支持。

添加了对用于测试 APK 的旧版 MultiDex 的支持。 (问题 37324038

除了修复了一些常见 bug 外,此版本还加入了以下更新:

  • apksigner 更新为 0.8 版:
    • 可与 Java 9 兼容。(问题 37137869
    • 新增了 --pass-encoding 参数,可用于处理使用非 ASCII 密码加密的密钥库和密钥。如果您切换到 Java 9,并且 apksigner 无法解密您的密钥库或密钥,请使用此参数指定用于创建密钥库或密钥的字符编码。如需了解详情,请参阅 apksigner 文档或从命令行运行 apksigner sign --help
    • apksigner 因摘要或签名算法不受支持而无法验证 JAR 签名时,显示更简单易懂的错误消息。(问题 63525618
  • 现在支持 AAPT2 守护程序模式(如果使用的是 Android Plugin for Gradle 3.0.0-beta7 或更高版本)。

除了修复了一些常见 bug 外,此版本还将 apksigner 重新添加到 Build Tools 软件包中(在 26.0.0 版中不小心遗漏了),并加入了对该工具的以下更新:

  • 添加了 PKCS #11 支持,允许使用存放在安全硬件中的密钥签名。(问题 37140484
  • 添加了对签名前加载其他 JCA 提供程序的支持。
  • 验证 APK 时属性为 android:targetSandboxVersion
  • 在签名时,如果 APK 所含文件的名称中出现“CR”(回车符)、“LF”(换行符)或“NUL”(null) 特殊字符,会拒绝该 APK。
  • 修复了 apksigner.bat,现在可正确处理含有空格的参数。(问题 38132450
  • 修复了 MANIFEST.MF 中同一条目存在多个摘要时出现的 JAR 签名验证 bug。(问题 38497270

添加了对使用 API 级别 26 进行构建的支持,并修复了一些常见 bug。

apksigner 进行了更新:

  • 添加了 --in 参数,以与现有的 --out 参数对称。
  • 如果您未使用 --key-pass 指定密钥密码,apksigner 会用密钥库密码作为密钥密码。不过,如果密钥要求使用不同的密码,现在系统会提示您从命令行输入密钥密码。(问题 37134986
  • 现在与适用于非 ASCII 密码的 jarsigner 兼容。(问题 37135737

修复了一些 bug。

此版本修复了一些 bug,并对 apksigner 做出了以下改进:

  • 支持 JAR 条目名称经过混淆处理的 APK。
  • --print-certs 开关现在也会转储 MD5 指纹。

修复了 Jack 工具链相关的一些 bug:

  • 修复了 Jack 在支持非 ASCII 源文件方面存在的问题。(问题:218892
  • 修复了在某些编译过程中引发 AssertionError 的问题。(问题:208414
  • 添加了 apksigner,这是一款用来替换 jarsigner 的 APK 签名工具。默认情况下,apksigner 会采用 jarsigner 所用的传统 JAR 签名方案和 Android 7.0(API 级别 24)中引入的 APK 签名方案 v2 对 APK 进行签名。对采用后者签名的 APK 做出的任何修改都会让它的签名失效。因此,必须在调用 apksigner 之前(而不是之后)执行 APK 后期处理(例如 zipalign)。之所以可以在 apksigner 之前调用 zipalign,是因为 apksigner 保留了 APK 对齐和压缩(与 jarsigner 不同)。
  • 修复了 arm64 设备上 RenderScript 支持库中出现的一些问题。
  • 修复了某些 Jelly Bean 设备上 RenderScript 支持库中出现的一些问题。
  • 支持 renderscriptTargetAPI 21+(如果使用的是 Android Plugin for Gradle 修订版 2.1.0 及更高版本)。
  • 提升了 dx 工具的合并性能。
  • 修复了适用于 Windows 的 RenderScript 编译器中出现的一些问题。

修复了 RenderScript 工具中出现的一些问题。

添加了对 Android 6.0(API 级别 23)版本的支持。

修复了 Android 4.4(API 级别 19)到 Android 4.1(API 级别 16)设备的 RenderScript 内核中存在的一些兼容性问题。

添加了对 Android 5.1(API 级别 22)的支持。

修复了在 32 位模式下构建数据布局时出现的问题。

修复了一些 MultiDex 文件脚本问题。

添加了对 APK 的 MultiDex 文件以及 Jack 的支持,解决了 64K 方法引用限制。

完成了对 Eclipse ADT 的更新,解决了在 Windows 平台上出现的一些不稳定性问题。

针对 Windows 上 Eclipse ADT 的初始更新。请使用修订版 21.0.2。

一般说明:
  • 添加了对 Android 5.0(API 级别 21)的支持。
  • RenderScript 现在支持针对 API 级别 21 及更高级别进行的无缝 32/64 位操作。
  • 修复了使用 JaCoCo 插件时 Gradle 构建系统出现的问题。(问题 69174
  • 添加了一个可在 Windows 中与长命令行搭配使用的“input-list”选项。
一般说明:
  • 添加了对 Android Wear 的支持。
一般说明:
  • 在 Build Tools 中添加了 zipalign
  • 修改了 aapt,以忽略无法编译的 XML 文件。

修复了 RenderScript 支持方面的问题。

修复了一些 RenderScript build 问题:
  • 修复了与 RenderScript 位码编码相关的问题。(问题 64775
  • 修复了 RenderScript 缺少数学符号的问题。(问题 64110

修复了一些其他的 build 问题:
  • 修复了针对使用 Gradle 在 NDK 模式下编译 RenderScript 的支持。
  • 修复了在 dx build 中出现的 BufferOverflowException 问题。 (问题 61710

添加了对 Android 4.4(API 级别 19)build 目标的支持。

修复了几个小的 build 问题。

修复了 RenderScript 支持模式存在的问题。

添加了对 Android 4.3(API 级别 18)build 目标的支持。

初始版本。

一般说明:
  • 添加了对 Android 4.2(API 级别 17)build 目标的支持。
  • 将 Android SDK 专用于 build 的组件从平台工具组件中分离出来,以便能在集成开发环境 (IDE) 组件之外单独更新 Build Tools。