Android Studio 3.4(2019 年 4 月)

Android Studio 3.4 是一个重要版本,包含各种新功能和改进。

3.4.2(2019 年 7 月)

这个次要更新包含各种 bug 修复和性能改进。如需查看重要的 bug 修复列表,请阅读 版本更新博客 上的相关博文。

3.4.1(2019 年 5 月)

这个次要更新包含各种 bug 修复和性能改进。如需查看重要的 bug 修复列表,请阅读 版本更新博客 上的相关博文。

3.4.0 已知问题

  • 将应用部署到运行 Android Q Beta 的设备时,性能分析功能会被禁用。

  • 使用 Data Binding Library 时,LiveDataListener.onChanged() 可能会因为 NPE 而失败。此问题的修复程序将包含在 Android Studio 3.4.1 中,并且已在最新 预览版 Android Studio 3.5 中提供。(请参阅问题 #122066788

IntelliJ IDEA 2018.3.4

Android Studio 核心 IDE 已通过 2018.3.4 版本 更新了 IntelliJ IDEA 的改进。

Android Gradle plugin 3.4.0 更新

如需了解 Android Gradle plugin 3.4.0 中的新功能,请参阅其版本说明

新的项目结构对话框

新的项目结构对话框 (PSD) 使更新依赖项和配置项目的不同方面(如模块、构建变体、签名配置和构建变量)变得更加容易。

您可以通过从菜单栏中选择 File > Project Structure 来打开 PSD。在 Windows 和 Linux 上,您也可以通过按下 Ctrl+Shift+Alt+S 来打开 PSD;在 macOS 上,则通过按下 Command+;(分号)。您可以在下方找到 PSD 中一些新增和更新部分的说明。

变量

PSD 中新的变量部分允许您创建和管理构建变量,例如用于在整个项目中保持依赖项版本号一致的变量。

  • 快速查看和编辑项目中 Gradle 构建脚本中已存在的构建变量。
  • 直接从 PSD 添加项目级或模块级的新构建变量。

注意:如果现有的构建配置文件通过复杂的 Groovy 脚本分配值,您可能无法通过 PSD 编辑这些值。此外,您无法使用 PSD 编辑用 Kotlin 编写的构建文件。

模块

模块部分,您可以配置应用于现有模块中所有构建变体的属性,或向项目中添加新模块。例如,您可以在此处配置 defaultConfig 属性或管理签名配置。

依赖项

按照以下步骤,检查和可视化项目中依赖关系图中的每个依赖项,这些依赖项由 Gradle 在项目同步期间解析

  1. 在 PSD 的左侧窗格中,选择 Dependencies
  2. 模块窗格中,选择要检查已解析依赖项的模块。
  3. 在 PSD 的右侧,打开已解析依赖项窗格,如下所示。

您还可以快速搜索并将依赖项添加到项目中,方法是先从 PSD 的依赖项部分选择一个模块,点击声明的依赖项部分的 (+) 按钮,然后选择要添加的依赖项类型。

根据您选择的依赖项类型,您应该会看到一个对话框,类似于下方所示,可帮助您将依赖项添加到模块。

构建变体

在 PSD 的此部分,您可以为项目中的每个模块创建和配置构建变体和产品变种。您可以添加清单占位符、添加 ProGuard 文件以及分配签名密钥等。

建议

在如下所示的 Suggestions 部分查看项目依赖项和构建变量的建议更新。

新的资源管理器

资源管理器是一个新的工具窗口,用于导入、创建、管理和使用应用中的资源。您可以通过从菜单栏中选择 View > Tool Windows > Resource Manager 来打开此工具窗口。资源管理器允许您执行以下操作

  • 可视化资源:您可以预览 drawable、颜色和布局,以快速找到所需的资源。
  • 批量导入:您可以通过将多个 drawable 资源拖放到资源管理器工具窗口中,或使用导入 drawable 向导,一次导入多个 drawable 资源。要访问该向导,请选择工具窗口左上角的 (+) 按钮,然后从下拉菜单中选择导入 drawable
  • 将 SVG 转换为 VectorDrawable 对象:您可以使用导入 drawable 向导将 SVG 图像转换为 VectorDrawable 对象。
  • 拖放资源:资源管理器工具窗口中,您可以将 drawable 拖放到布局编辑器的设计和 XML 视图中。
  • 查看替代版本:现在,您可以双击工具窗口中的资源来查看资源的替代版本。此视图显示您创建的不同版本以及包含的限定符。
  • 平铺和列表视图:您可以更改工具窗口中的视图,以不同的排列方式可视化资源。

要了解更多信息,请阅读关于如何管理应用资源的指南。

性能分析和调试 APK 时检查构建 ID

当您为 APK 中的 .so 共享库提供调试符号文件时,Android Studio 会验证所提供的符号文件的 构建 ID 是否与 APK 中 .so 库的构建 ID 匹配。

如果您使用构建 ID 构建 APK 中的原生库,Android Studio 会检查符号文件中的构建 ID 是否与原生库中的构建 ID 匹配,如果不匹配,则会拒绝符号文件。如果您没有使用构建 ID 进行构建,则提供不正确的符号文件可能会导致调试问题。

R8 默认启用

R8 将脱糖、代码压缩、代码混淆、优化和 dexing 集成到一个步骤中,从而带来显著的构建性能改进。R8 是在 Android Gradle plugin 3.3.0 中引入的,现在对于使用插件 3.4.0 及更高版本的应用和 Android 库项目,默认启用 R8。

下图概要介绍了引入 R8 之前的编译过程。

Before R8, ProGuard was a different compile step from dexing and
            desugaring.

现在,使用 R8,脱糖、代码压缩、代码混淆、优化和 dexing (D8) 都可以在一个步骤中完成,如下所示。

With R8, desugaring, shrinking, obfuscating, optimizing, and dexing
            are all performed in a single compile step.

请记住,R8 旨在与您现有的 ProGuard 规则配合使用,因此您可能无需采取任何操作即可从 R8 中获益。然而,由于它是一种与 ProGuard 不同的技术,专门为 Android 项目设计,代码压缩和优化可能会导致移除 ProGuard 可能不会移除的代码。因此,在这种不太可能发生的情况下,您可能需要添加额外的规则,以在构建输出中保留该代码。

如果您在使用 R8 时遇到问题,请阅读R8 兼容性常见问题解答,查看是否有解决方案。如果未记录解决方案,请提交错误报告。您可以通过将以下任一行添加到项目的 gradle.properties 文件中来禁用 R8

    # Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    
  

注意:对于给定的构建类型,如果您在应用模块的 build.gradle 文件中将 useProguard 设置为 false,则无论您是否在项目的 gradle.properties 文件中禁用 R8,Android Gradle 插件都会使用 R8 为该构建类型压缩应用的代码。

Navigation 组件支持的所有参数类型现在都在 Navigation Editor 中受支持。有关受支持类型的更多信息,请参阅在目标之间传递数据

布局编辑器改进 {:#layout-editor}

布局编辑器中的属性窗格已简化为一个页面,其中包含可展开以显示可配置属性的部分。属性窗格还包括以下更新

  • 新的声明的属性部分列出了布局文件指定的属性,并允许您快速添加新属性。
  • 现在,属性窗格中的每个属性旁边都有指示器,当属性值为资源引用时,指示器为实心,否则为空心。
  • 具有错误或警告的属性现在会突出显示。红色突出显示表示错误(例如,使用无效布局值时),橙色突出显示表示警告(例如,使用硬编码值时)。

快速导入依赖项的新意图操作

如果您开始在代码中使用某些 Jetpack 和 Firebase 类,新的意图操作会建议您将所需的 Gradle 库依赖项添加到项目中,如果尚未添加的话。例如,如果您引用 WorkManager 类而未首先导入所需的 android.arch.work:work-runtime 依赖项,则意图操作允许您轻松地通过一次点击完成此操作,如下所示。

特别是,由于 Jetpack 将支持库重新打包成更易于管理和更新的离散包,此意图操作可帮助您快速添加仅使用 Jetpack 组件所需的依赖项。