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*
artifacts。 - 改进了 R8 对 ProGuard 规则的解析。
- 已修复以下错误
- 尝试运行 Kotlin 主类失败,并出现错误:
"Error: Could not find or load main class..."
- 在执行某些优化时,R8 进入无限循环。
- 在“运行”窗口中使用“重新运行失败的测试”命令有时会错误地返回消息“未找到测试”。
- D8 未正确处理
invoke-virtual
实例,导致出现VerifyError
错误而崩溃:invoke-super/virtual can't be used on private method
- 数据绑定编译器依赖于旧版本的
com.android.tools:annotations
。编译器现在在可用时使用基础项目中的工具批注。 - 在使用分析器时,Android Studio 在片段转换过程中崩溃。
- 调试包含文本框的布局时,调试器崩溃。
- D8 无法读取一些包含特殊字符的 ZIP 文件。
3.1.3 (2018 年 6 月)
此 Android Studio 3.1 更新包含对以下错误的修复
- 内存泄漏导致在使用布局编辑器后 Android Studio 变慢且无响应。此更新包含对大多数这些问题的修复。我们打算尽快发布另一个更新来解决其他内存泄漏问题。
- 使用 D8 构建的一些应用在某些 Verizon Ellipsis 平板电脑上崩溃。
- 在运行 Android 5.0 或 5.1(API 级别 21 或 22)的设备上,使用 D8 构建的应用安装失败,并出现
INSTALL_FAILED_DEXOPT
错误。 - 在运行 Android 4.4(API 级别 19)的设备上,使用 OkHttp 库并使用 D8 构建的一些应用崩溃。
- Android Studio 有时无法启动,在
com.intellij.psi.jsp.JspElementType
的类初始化过程中出现ProcessCanceledException
错误。
3.1.2 (2018 年 4 月)
此 Android Studio 3.1 更新包含对以下错误的修复
- 在某些情况下,Android Studio 在退出过程中无限期挂起。
-
启用 Instant Run 时,使用源集 配置的构建失败,并显示以下消息
“Android Gradle 插件不识别 SourceSet name。”
- 启用 Instant Run 时,由“运行”命令触发的新的 Kotlin 项目的构建失败。
- 编辑
build.gradle
文件时,键入字符和字符出现在屏幕上之间有时会有明显的延迟。 -
在一些具有大量模块或外部依赖项的项目中,在 dexing 过程中发生构建失败,并出现以下错误消息
“RejectedExecutionException: Thread limit exceeded replacing blocked worker”
- D8 主 DEX 列表的计算未考虑某些反射调用。
此更新还包含一些更改,这些更改可在某些情况下使从 Gradle 运行 lint 检查的速度更快。
3.1.1 (2018 年 4 月)
此 Android Studio 3.1 更新包含对以下错误的修复
-
在某些情况下,当在 Android Studio 3.1 中首次打开在 Android Studio 3.0 中创建的项目时,“运行/调试配置”中的“启动前”区域中会删除 Gradle 感知 Make 任务。结果是,单击“运行”或“调试”按钮时项目不会构建,这反过来会导致失败,例如部署不正确的 APK 和使用 Instant Run 时崩溃。
为了解决此问题,Android Studio 3.1.1 会将 Gradle 感知 Make 任务添加到缺少此条目的项目的运行配置中。此修改在加载项目时第一次 Gradle 同步后发生。
- 如果启用了高级分析,则在调试包含文本框的布局时,调试器崩溃。
- 点击**构建变体**后,Android Studio 冻结。
- AAR(Android 归档)文件被提取了两次,一次在 Gradle 同步过程中,一次在 Gradle 构建过程中。
- 一些从 SVG 文件导入的矢量可绘制对象缺少元素。
- 关于
compile
依赖配置已弃用的警告已更新,提供了关于implementation
和api
配置的更好指导。有关迁移离开compile
配置的详细信息,请参阅新依赖配置文档。
编码/IDE
IntelliJ 2017.3.3
核心 Android Studio IDE 已通过 IntelliJ IDEA 2017.3.3 版本的改进进行了更新。改进包括对集合和字符串更好的控制流分析、改进的空值推断、新的快速修复等等。
有关详细信息,请参阅 JetBrains 的 IntelliJ IDEA 版本发行说明2017.2和2017.3,以及 JetBrains 的错误修复更新发行说明。
Room 的 SQL 编辑改进
使用Room 数据库库时,您可以利用 SQL 编辑的几项改进。
- 在
Query
中的代码补全功能了解 SQL 表(实体)、列、查询参数、别名、联接、子查询和 WITH 子句。 - SQL 语法高亮显示现在可以使用了。
- 您可以在 SQL 中右键单击表名并重命名它,这也会重写相应的 Java 或 Kotlin 代码(例如,查询的返回类型)。重命名也可以反向进行,因此重命名 Java 类或字段会重写相应的 SQL 代码。
- 使用**查找用法**(右键单击并从上下文菜单中选择**查找用法**)时,会显示 SQL 用法。
- 要导航到 Java 或 Kotlin 代码中 SQL 实体的声明,您可以按住 Control(Mac 上为 Command)键,然后单击该实体。
有关使用 SQL 和 Room 的信息,请参阅使用 Room 保存本地数据库中的数据。
数据绑定的更新
此更新包含对数据绑定的几项改进。
-
您现在可以在数据绑定表达式中使用
LiveData
对象作为可观察字段。ViewDataBinding
类现在包含一个新的setLifecycle()
方法,您可以使用它来观察LiveData
对象。 -
ObservableField
类现在可以在其构造函数中接受其他Observable
对象。 -
您可以预览数据绑定类的新的增量编译器。有关此新编译器的详细信息以及启用它的说明,请参阅数据绑定编译器 V2。
新编译器的优点包括:
-
ViewBinding
类由 Gradle 的 Android 插件在 Java 编译器之前生成。 - 库在应用程序编译时保留其生成的绑定类,而不是每次都重新生成。这可以大大提高多模块项目的性能。
-
编译器和 Gradle
D8 是默认的 DEX 编译器
D8 编译器现在默认用于生成 DEX 字节码。
这个新的 DEX 编译器带来了一些好处,包括:
- 更快的 dexing
- 更低的内存使用率
- 改进的代码生成(更好的寄存器分配,更智能的字符串表)
- 单步执行代码时更好的调试体验
除非您之前手动禁用了 D8 编译器,否则您无需对代码或开发工作流程进行任何更改即可获得这些好处。
如果您在gradle.properties
中将android.enableD8
设置为false
,则删除该标志或将其设置为true
。
android.enableD8=true
有关详细信息,请参阅新的 DEX 编译器。
增量反糖化
对于使用Java 8 语言特性的项目,增量反糖化默认启用,可以提高构建速度。
反糖化将语法糖转换为编译器可以更高效处理的形式。
您可以通过在项目的gradle.properties
文件中指定以下内容来禁用增量反糖化:
android.enableIncrementalDesugaring=false
简化的输出窗口
**Gradle 控制台**已被**构建**窗口取代,该窗口具有**同步**和**构建**选项卡。
有关如何使用新的简化**构建**窗口的详细信息,请参阅监控构建过程。
批量更新和索引并发
Gradle 同步和 IDE 索引过程现在效率更高,减少了在许多冗余索引操作上浪费的时间。
C++ 和 LLDB
我们在 C++ 开发的编码、同步、构建和调试阶段进行了许多质量和性能改进。改进包括:
-
如果您使用大型 C++ 项目,您应该会注意到构建符号所花费的时间显著减少。大型项目的同步时间也大大减少了。
-
通过更积极地重用缓存结果,改进了使用 CMake 构建和同步时的性能。
-
为更多 C++ 数据结构添加格式化程序(“漂亮打印机”)使 LLDB 输出更易于阅读。
-
LLDB现在仅适用于 Android 4.1(API 级别 16)及更高版本。
**注意:**使用 Android Studio 3.0 或更高版本进行原生调试在 32 位 Windows 上不起作用。如果您使用的是 32 位 Windows 并需要调试原生代码,请使用 Android Studio 2.3。
Kotlin
Kotlin 升级到 1.2.30 版本
Android Studio 3.1 包含Kotlin 1.2.30 版本。
现在使用命令行 lint 检查分析 Kotlin 代码
从命令行运行 lint现在会分析您的 Kotlin 类。
对于您想要对其运行 lint 的每个项目,必须在顶级build.gradle
文件中包含Google 的 Maven 存储库。对于在 Android Studio 3.0 和更高版本中创建的项目,已经包含了 Maven 存储库。
性能工具
使用 CPU Profiler 对原生 C++ 进程进行采样
CPU Profiler现在包含一个默认配置,用于记录应用程序原生线程的采样跟踪。您可以通过将应用程序部署到运行 Android 8.0(API 级别 26)或更高版本的设备,然后从 CPU Profiler 的记录配置下拉菜单中选择**采样(原生)**来使用此配置。之后,记录和检查跟踪就像您平时一样。
您可以通过创建记录配置来更改默认设置,例如采样间隔。
要切换回跟踪 Java 线程,请选择**采样(Java)**或**已检测(Java)**配置。
筛选 CPU 跟踪、内存分配结果和堆转储
CPU Profiler和Memory Profiler包含一个搜索功能,允许您筛选记录方法跟踪、内存分配或堆转储的结果。
要搜索,请单击窗格右上角的**筛选**,键入您的查询,然后按 Enter。
**提示:**您也可以按 Control + F(Mac 上为 Command + F)打开搜索字段。
在 CPU Profiler 的**火焰图**选项卡中,包含与您的搜索查询相关的方法的调用堆栈将突出显示并移至图表左侧。
有关按方法、类或包名筛选的更多信息,请参阅记录和检查方法跟踪。
网络 Profiler 中的请求选项卡
网络 Profiler现在包含一个**请求**选项卡,该选项卡提供有关所选时间线期间网络请求的详细信息。在以前的版本中,网络 Profiler 仅提供有关网络响应的信息。
网络 Profiler 中的线程视图
在网络 Profiler中选择时间线的一部分后,您可以选择以下选项卡之一以查看该时间段内网络活动的更多详细信息:
- **连接视图:**提供与以前版本的 Android Studio 相同的信息——它列出了在所选时间线部分内通过应用程序的所有 CPU 线程发送或接收的文件。对于每个请求,您可以检查大小、类型、状态和传输持续时间。
- **线程视图:**显示应用程序每个 CPU 线程的网络活动。此视图允许您检查应用程序的哪些线程负责每个网络请求。
布局检查器
布局检查器增加了新功能,包括以前由已弃用的层次结构查看器和像素完美工具提供的一些功能。
- 用于导航和检查布局的缩放按钮和键盘快捷键。
- 参考网格叠加。
- 加载参考图像并将其用作叠加层的能力(用于将您的布局与 UI 模型进行比较)。
- **渲染子树预览**可隔离复杂布局中的视图。
布局编辑器
布局编辑器中的**调色板**进行了许多改进。
- 重新组织视图和布局的类别。
- 视图和布局的新**常用**类别,您可以使用**收藏夹**命令将其添加到其中。
- 改进的视图和布局搜索。
- 用于打开特定视图或布局元素的文档的新命令。
您可以使用**转换视图**命令在**组件树**或设计编辑器中将视图或布局转换为另一种类型的视图或布局。
您现在可以使用视图检查器中**属性**窗口顶部的新的创建连接按钮轻松地为所选视图附近的项目创建约束。
运行和 Instant Run
**选择部署目标**对话框中的**对未来启动使用相同的选择**选项的行为已变得更加一致。如果启用了**使用相同的选择**选项,则只有在第一次使用**运行**命令时才会打开**选择部署目标**对话框,直到所选设备不再连接。
当以运行 Android 8.0(API 级别 26)或更高版本的设备为目标时,Instant Run可以部署对资源的更改,而不会导致应用程序重启。这是因为资源包含在拆分 APK 中。
模拟器
有关自 Android Studio 3.0 以来模拟器中新增内容和更改的详细信息,请参阅 Android 模拟器的发行说明,从27.0.2 版本到27.1.12 版本。
主要改进包括:
- 快速启动快照用于保存模拟器状态并加快启动速度,并可以使用**立即保存**命令保存自定义启动状态。
- 无窗口模拟器屏幕。
- Android 8.0(API 级别 26)、Android 8.1(API 级别 27)和 Android P 开发者预览版的系统镜像。
用户界面和用户体验改进
更多工具提示、键盘快捷键和帮助信息
我们在 Android Studio 的许多地方添加了工具提示和有用的消息覆盖层。
要查看许多命令的键盘快捷键,只需将鼠标指针悬停在按钮上直到工具提示出现。
已移除“工具”>“Android”菜单
工具 > Android 菜单已被移除。以前位于此菜单下的命令已被移动。
- 许多命令已直接移动到工具菜单下。
- 使用 Gradle 文件同步项目 命令已移动到文件菜单。
- 设备监控器 命令已被移除,如下所述。
命令行可用的设备监控器
在 Android Studio 3.1 中,设备监控器的作用不如以前那么重要。在许多情况下,设备监控器提供的功能现在由新的改进工具提供。
请参阅设备监控器文档,了解从命令行调用设备监控器的说明以及通过设备监控器可用的工具的详细信息。