Android Studio 3.1(2018 年 3 月)

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

3.1.4(2018 年 8 月)

此 Android Studio 3.1 更新进行了下列更改和修复:

  • 捆绑的 Kotlin 版本现为 1.2.50。
  • 使用 kotlin-stdlib-jdk* artifacts(而非已废弃的 kotlin-stdlib-jre* 工件)创建新项目。
  • 对 ProGuard 规则的 R8 解析已得到改进。
  • 下列错误已得到修复:
    • 尝试运行 Kotlin Main 类失败,并显示以下错误:"Error: Could not find or load main class..."
    • R8 在执行某些优化时进入了无限循环。
    • Run 窗口中使用 Rerun failed tests 命令有时会错误地返回“No tests were found”消息。
    • D8 未正确处理 invoke-virtual 实例,导致 VerifyError 崩溃: invoke-super/virtual can't be used on private method
    • 数据绑定编译器依赖于旧版本的 com.android.tools:annotations。现在,编译器会使用来自基础项目的工具注释(如可用)。
    • 使用性能分析器时,Android Studio 在 fragment 过渡期间崩溃。
    • 在调试包含文本框的布局时,调试程序崩溃了。
    • D8 无法读取某些带有特殊字符的 ZIP 文件。

3.1.3(2018 年 6 月)

此 Android Studio 3.1 更新修复了下列 bug:

  • 内存泄漏导致 Android Studio 在您使用布局编辑器后变得缓慢且无响应。此更新包含针对大多数此类问题的修复程序。我们打算很快发布另一项更新来解决额外的内存泄漏问题。
  • 一些使用 D8 构建的应用在部分 Verizon Ellipsis 平板电脑上发生崩溃。
  • 在搭载 Android 5.0 或 5.1(API 级别 21 或 22)的设备上,使用 D8 构建的应用的安装失败并出现 INSTALL_FAILED_DEXOPT 错误。
  • 一些使用 OkHttp 库并使用 D8 构建的应用在搭载 Android 4.4(API 级别 19)的设备上崩溃。
  • Android Studio 有时无法启动,并在类初始化期间出现 ProcessCanceledException(对于 com.intellij.psi.jsp.JspElementType)。

3.1.2(2018 年 4 月)

此 Android Studio 3.1 更新修复了下列 bug:

  • 在某些情况下,Android Studio 会在退出时无限期挂起。
  • 启用 Instant Run 后,使用源代码集配置的 build 失败,并显示以下消息:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • 启用 Instant Run 后,由 Run 命令触发的新 Kotlin 项目 build 失败。
  • 修改 build.gradle 文件时,输入某个字符后要过很长一段时间才会在屏幕上显示该字符。
  • 在一些含有大量模块或外部依赖项的项目中执行 dex 处理时,发生构建失败,并显示以下错误消息:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • D8 主 DEX 列表的计算方式没有考虑到一些反射调用。

此更新还包含一些更改,这些更改使得在某些情况下从 Gradle 运行 Lint 检查的速度更快。

3.1.1(2018 年 4 月)

此 Android Studio 3.1 更新修复了下列 bug:

  • 在某些情况下,在 Android Studio 3.1 中首次打开在 Android Studio 3.0 中创建的项目时,Gradle-aware Make 任务已从 Run/Debug ConfigurationsBefore launch 区域中移除。因此,点击 RunDebug 按钮时没有构建项目,这反过来会导致使用 Instant Run 时部署错误的 APK 以及崩溃等失败情况。

    为解决此问题,Android Studio 3.1.1 会将 Gradle-aware Make 任务添加到缺少此条目的项目的运行配置中。此项修改发生在首次 Gradle 同步之后的项目加载完毕时。

  • 在调试包含文本框的布局时,如果启用了高级性能分析,调试程序会崩溃。
  • 点击 Build Variants 后,Android Studio 冻结。
  • AAR(Android 归档)文件被提取了两次,一次是在 Gradle 同步流程中,另一次是在 Gradle 构建流程中。
  • 从 SVG 文件导入的一些矢量可绘制对象中缺少元素。
  • 更新了有关废弃 compile 依赖项配置的警告,并优化了有关 implementationapi 配置的指导。要详细了解如何停止使用 compile 配置,请参阅新依赖项配置的文档

编码/IDE

IntelliJ 2017.3.3

核心 Android Studio IDE 已通过 2017.3.3 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。改进功能包括为集合与字符串提供了更好的控制流分析,改进了可为 null 性推理,添加了一些快速修复,等等。

如需了解详情,请参阅 IntelliJ IDEA 版本 2017.22017.3 的 JetBrains 版本说明,以及 bug 修复更新的 JetBrains 版本说明。

通过 Room 改进了 SQL 修改

使用 Room 数据库时,您可以利用针对 SQL 修改的多项改进:

  • Query 中的代码补全功能可以理解 SQL 表格(实体)、列、查询参数、别名、联接、子查询和 WITH 子句。
  • SQL 语法突出显示现在可以正常使用。
  • 您可以右键点击 SQL 中的表格名称并对其重命名,这也会重写相应的 Java 或 Kotlin 代码(例如,包括查询的返回类型)。同样地,如果您重命名 Java 类或字段,也会让系统重写相应的 SQL 代码。
  • 使用 Find usages(右键点击并从上下文菜单中选择 Find usages)时,系统会显示 SQL 用法。
  • 如需前往某个 SQL 实体在 Java 或 Kotlin 代码中的声明,您可以在按住 Ctrl 键(Mac 上为 Command 键)的同时点击该实体。

如需了解如何将 SQL 与 Room 搭配使用,请参阅使用 Room 将数据保存到本地数据库

数据绑定更新

此更新包括针对数据绑定的多项改进:

  • 现在,您可以将 LiveData 对象用作数据绑定表达式中的一个可观察字段。ViewDataBinding 类现在添加了用于观察 LiveData 对象的新 setLifecycle() 方法。

  • ObservableField 类现在可在其构造函数中接受其他 Observable 对象。

  • 您可以预览数据绑定类的新增量编译器。如需详细了解这个新编译器以及启用该编译器的说明,请参阅数据绑定编译器 V2

    新编译器的好处包括:

    • Android Plugin for Gradle 会先于 Java 编译器生成 ViewBinding 类。
    • 编译应用时,库会保留其生成的绑定类,而不是每次都重新生成这些类。这可以大大提高多模块项目的性能。

编译器和 Gradle

D8 是默认的 DEX 编译器

D8 编译器现已默认用于生成 DEX 字节码。

这款新的 DEX 编译器可提供多项好处,包括:

  • Dex 速度更快
  • 内存用量更低
  • 改进了代码生成功能(更好的注册表分配和更智能的字符串表格)
  • 在单步调试代码时可提供更好的调试体验

除非您之前手动停用了 D8 编译器,否则无需对代码或开发工作流进行任何更改即可获得这些好处。

如果您在 gradle.properties 中将 android.enableD8 设为 false,请删除此标记或将其设为 true

        android.enableD8=true
      

如需了解详情,请参阅新的 DEX 编译器

增量脱糖

对于使用 Java 8 语言功能的项目,系统会默认启用增量脱糖,这可以缩短构建时间。

脱糖可将语法糖转换为一种可供编译器更高效地处理的格式。

您可以通过在项目的 gradle.properties 文件中指定以下内容来停用增量脱糖:

        android.enableIncrementalDesugaring=false
      

简化了输出窗口

Gradle Console 已替换为 Build 窗口,后者包含 SyncBuild 标签页。

如需详细了解如何使用经过简化的新 Build 窗口,请参阅监控构建流程

批量更新和并发索引

现在,Gradle 同步和 IDE 索引编制流程的效率更高,从而缩短了在许多冗余索引编制操作上浪费的时间。

C++ 和 LLDB

我们在 C++ 开发的编码、同步、构建和调试阶段做出了多项质量和性能方面的改进。具体改进包括:

  • 如果您处理的是大型 C++ 项目,应该会注意到在构建符号上花费的时间明显减少。大型项目的同步时间也大大减少。

  • 通过更积极地重复使用缓存结果,改进了构建 CMake 并与之同步时的性能。

  • 为更多 C++ 数据结构添加了格式转换工具(“pretty printers”),使 LLDB 输出更易于阅读。

  • LLDB 现在仅适用于 Android 4.1(API 级别 16)及更高版本。

注意:在 32 位 Windows 系统上,无法使用 Android Studio 3.0 或更高版本进行原生调试。如果您使用的是 32 位 Windows 系统,并且需要调试原生代码,请使用 Android Studio 2.3。

Kotlin

Kotlin 已升级到版本 1.2.30

Android Studio 3.1 包含 Kotlin 版本 1.2.30

现在使用命令行 lint 检查分析 Kotlin 代码

现在,可通过从命令行运行 lint 来分析您的 Kotlin 类。

对于您希望运行 lint 的每个项目,Google 的 Maven 制品库必须包含在顶级 build.gradle 文件中。在 Android Studio 3.0 及更高版本中创建的项目已包含 Maven 制品库。

性能工具

使用 CPU 性能分析器对原生 C++ 进程采样

CPU 性能分析器现在包含一项默认配置,用于记录应用的原生线程的采样轨迹。您可以通过以下方法使用此配置:将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备,然后从 CPU 性能分析器的记录配置下拉菜单中选择 Sampled (Native)。然后,按照常规方法记录和检查轨迹

您可以通过创建记录配置来更改默认设置,例如采样间隔。

如需切换回跟踪 Java 线程,请选择 Sampled (Java)Instrumented (Java) 配置。

过滤 CPU 轨迹、内存分配结果和堆转储

CPU 性能分析器内存分析器包含搜索功能,可让您从方法轨迹记录、内存分配或堆转储中过滤结果。

如需进行搜索,请点击窗格右上角的 Filter ,输入您的查询,然后按 Enter。

提示:您还可以按 Ctrl + F(在 Mac 上,按 Command + F)来打开搜索字段。

在 CPU 性能分析器的 Flame Chart 标签页中,包含搜索查询相关方法的调用堆栈会突出显示,并移至图表左侧。

如需详细了解如何按方法、类或软件包名称过滤,请参阅记录和检查方法轨迹

网络性能分析器中的“Request”标签页

网络性能分析器现在包含 Request 标签页,其中提供了选定时间范围内网络请求的相关详细信息。在以前的版本中,网络性能分析器仅提供有关网络响应的信息。

网络性能分析器中的 Thread View

网络性能分析器中选择时间轴的一部分后,您可以选择以下某个标签页,以查看有关该时间范围内的网络活动的更多详细信息:

  • Connection View:提供与 Android Studio 先前版本相同的信息,其中列出了在时间轴上选定时段内从您应用的所有 CPU 线程发送或接收的文件。对于每个请求,您都可以检查大小、类型、状态和传输时长。
  • Thread View:显示应用的每个 CPU 线程的网络活动。此视图可让您检查各网络请求由应用的哪些线程负责。

布局检查器

Layout Inspector 获得了新功能,包括以前由 Hierarchy Viewer 和 Pixel Perfect 工具提供的部分功能:

  • 用于导航和检查布局的缩放按钮和键盘快捷键
  • 参考网格叠加层
  • 能够加载参考图片并将其用作叠加层(用于将您的布局与界面模型进行比较)
  • Render Subtree Preview,以隔离复杂布局中的视图

布局编辑器

布局编辑器中的 Palette 获得了许多改进:

  • 重新组织视图和布局的类别。
  • 为视图和布局新增了 Common 类别,您可以使用 Favorite 命令将视图和布局添加至该类别。
  • 改进了对视图和布局的搜索
  • 新增了用于打开文档以显示特定视图或布局元素的命令。

您可以在 Component Tree 或设计编辑器中使用新的 Convert View 命令将视图或布局转换为另一种类型的视图或布局。

您现在可以使用新的“Create a connection” 按钮(位于 Attributes 窗口顶部的视图检查器中)为所选视图附近的项轻松创建约束条件。

Run 和 Instant Run

Select deployment target 对话框中 Use same selection for future launches 选项的行为现已更加一致。如果启用了 Use same selection 选项,Select deployment target 对话框将仅在您首次使用 Run 命令时打开,直到所选设备不再保持连接为止。

以搭载 Android 8.0(API 级别 26)或更高版本的设备为目标时,Instant Run 可以将更改部署到资源,而不会导致应用重启。之所以能这么做,是因为这些资源包含在拆分 APK 中。

模拟器

如需详细了解自 Android Studio 3.0 以来模拟器中的新变化以及变更内容,请参阅版本 27.0.2版本 27.1.12 的 Android 模拟器版本说明。

主要改进包括:

  • 快速启动快照,用于保存模拟器状态并加快启动速度,并且能够使用 Save now 命令保存自定义启动状态。
  • 无窗口模拟器屏幕。
  • 适用于 Android 8.0(API 级别 26)、Android 8.1(API 级别 27)和 Android P 开发者预览版的系统映像。

界面和用户体验方面的改进

更多提示、键盘快捷键和有用的消息

我们在 Android Studio 中的许多位置添加了提示和有用的消息叠加层。

如需查看很多命令的键盘快捷键,只需将鼠标指针悬停在某个按钮上,直到系统显示提示。

移除了“Tools > Android”菜单

Tools > Android 菜单已被移除。之前位于此菜单下的命令已移到别处。

  • 很多命令已直接移到 Tools 菜单下。
  • Sync project with gradle files 命令已移至 File 菜单。
  • Device Monitor 命令已被移除,如下所述。

可从命令行调用 Device Monitor

在 Android Studio 3.1 中,Device Monitor 发挥的作用不及以前。在许多情况下,Device Monitor 提供的功能现在由经过改进的新工具提供。

如需了解如何从命令行调用 Device Monitor,并查看有关 Device Monitor 所提供工具的说明,请参阅 Device Monitor 文档