Android Studio 3.2 (2018 年 9 月)
Android Studio 3.2 是一个主要版本,包含各种新特性和改进。
3.2.1 (2018 年 10 月)
Android Studio 3.2 的本次更新包含以下更改和修复
- 捆绑的 Kotlin 版本现已更新为 1.2.71。
- 默认构建工具版本现已更新为 28.0.3。
- 在 Navigation 库中,参数类型已从
type
重命名为argType
。 - 已修复以下 bug
- 使用 Data Binding 库时,带有下划线的变量名会导致编译错误。
- CMake 导致 IntelliSense 和其他 CLion 功能失效。
- 在未使用
androidx.*
库的项目中添加SliceProvider
会导致编译错误。 - 某些 Kotlin 单元测试未运行。
- 数据绑定问题导致
PsiInvalidElementAccessException
。 <merge>
元素有时会导致 Layout Editor 崩溃。
3.2.0 已知问题
注意:这些问题已在 Android Studio 3.2.1 中解决
我们强烈建议不要使用 Kotlin 1.2.70 版本。
Kotlin 1.2.61 版本修复了一个可能导致 Android Studio 挂起的 bug,但 Kotlin 1.2.70 不包含此修复。
然而,Kotlin 1.2.71 及更高版本确实包含此修复。
-
虽然通常不需要指定构建工具版本,但当使用 Android Gradle 插件 3.2.0 且
renderscriptSupportModeEnabled
设置为true
时,需要在每个模块的build.gradle
文件中包含以下内容android.buildToolsVersion "28.0.3"
新功能助手
一个新的助手会向您介绍 Android Studio 的最新更改。
如果您在全新安装或更新后启动 Android Studio 时,它检测到有新的信息要显示,助手就会打开。您也可以通过选择 Help > What's new in Android Studio 打开助手。
Android Jetpack
Android Jetpack 通过组件、工具和指导来加速 Android 开发,这些组件、工具和指导可消除重复性任务,使您能够更快速、更轻松地构建高质量、可测试的应用。Android Studio 包含以下更新以支持 Jetpack。有关更多信息,请参阅Jetpack 文档。
导航编辑器
新的导航编辑器集成了 Android Jetpack 的导航组件,提供了一个图形视图来创建应用的导航结构。导航编辑器简化了应用内目的地之间导航的设计和实现。
在 Android Studio 3.2 中,导航编辑器是一个实验性功能。要启用导航编辑器,请点击 File > Settings(在 Mac 上是 Android Studio > Preferences),在左侧窗格中选择 Experimental 类别,勾选 Enable Navigation Editor 旁边的复选框,然后重启 Android Studio。
要了解更多信息,请阅读导航编辑器文档。
AndroidX 迁移
作为 Jetpack 的一部分,我们将 Android Support Libraries 迁移到使用 androidx
命名空间的新的 Android 扩展库。有关更多信息,请参阅AndroidX 概览。
Android Studio 3.2 通过新的迁移功能帮助您完成此过程。
要将现有项目迁移到 AndroidX,请选择 Refactor > Migrate to AndroidX。如果您有任何尚未迁移到 AndroidX 命名空间的 Maven 依赖项,Android Studio 构建系统也会自动转换这些项目依赖项。
Android Gradle 插件提供了以下全局标志,您可以在 gradle.properties
文件中进行设置
android.useAndroidX
:当设置为true
时,此标志表示您希望从现在开始使用 AndroidX。如果标志不存在,Android Studio 的行为就好像该标志设置为false
。android.enableJetifier
:当设置为true
时,此标志表示您希望获得工具支持(来自 Android Gradle 插件),以自动转换现有第三方库,使其看起来像是为 AndroidX 编写的。如果标志不存在,Android Studio 的行为就好像该标志设置为false
。
当您使用 Migrate to AndroidX 命令时,这两个标志都会设置为 true
。
如果您想立即开始使用 AndroidX 库,并且不需要转换现有第三方库,可以将 android.useAndroidX
标志设置为 true
,将 android.enableJetifier
标志设置为 false
。
Android 应用包
Android App Bundle 是一种新的上传格式,包含您的应用的所有编译代码和资源,但将 APK 的生成和签名延迟到 Google Play 商店。
Google Play 新的应用分发模型然后使用您的应用包为每个用户的设备配置生成并提供优化的 APK,因此每个用户只下载运行其应用所需的代码和资源。您不再需要构建、签名和管理多个 APK,并且用户获得的下载内容更小、更优化。
此外,您可以将功能模块添加到您的应用项目,并将它们包含在您的应用包中。然后,您的用户可以按需下载和安装您的应用功能。
要构建包,请选择 Build > Build Bundle(s) / APK(s) > Build Bundle(s)。
有关更多信息,包括构建和分析 Android App Bundle 的说明,请参阅Android App Bundle。
Layout Editor 中的示例数据
许多 Android 布局具有运行时数据,这使得在应用开发的 设计阶段很难可视化布局的外观。现在,您可以轻松地在 Layout Editor 中查看填充了示例数据的视图预览。当您添加视图时,设计窗口中的视图下方会出现一个按钮 。点击此按钮可设置设计时视图属性。您可以从各种示例数据模板中选择,并指定要填充视图的示例项目数量。
要尝试使用示例数据,请将 RecyclerView
添加到新布局中,点击视图下方的设计时属性按钮 ,然后从示例数据模板的轮播中选择一项。
Slices
Slices 提供了一种新的方式,可以将应用功能的一部分嵌入到 Android 上的其他用户界面界面中。例如,Slices 可以用于在 Google 搜索建议中显示应用功能和内容。
Android Studio 3.2 内置了一个模板,可帮助您使用新的 Slice Provider API 扩展您的应用,以及新的 lint 检查,以确保您在构建 Slices 时遵循最佳实践。
要开始使用,右键点击项目文件夹并选择 New > Other > Slice Provider。
要了解更多信息,包括如何测试您的 Slice 交互,请阅读Slices 入门指南。
Kotlin 1.2.61
Android Studio 3.2 捆绑了 Kotlin 1.2.61,新的 Android SDK 与 Kotlin 的集成更好。有关更多信息,请参阅 Android 开发者博客。
IntelliJ IDEA 2018.1.6
核心 Android Studio IDE 已通过 2018.1.6 版本更新了 IntelliJ IDEA 的改进。
Android Profilers
在 Android Studio 3.2 中尝试以下新的 Android Profiler 功能。
会话
您现在可以将 Profiler 数据保存为会话,以便稍后重新访问和检查。 Profiler 会保留您的会话数据,直到您重新启动 IDE。
当您记录方法跟踪或捕获堆转储时,IDE 会将该数据(以及您应用的 네트워크 activity)作为单独的条目添加到当前会话中,您可以轻松地在不同记录之间来回切换以比较数据。
System Trace
在 CPU Profiler 中,选择新的 System Trace 配置以检查设备的系统 CPU 和线程活动。此跟踪配置基于 systrace
,对于调查系统级问题(例如 UI 卡顿)非常有用。
使用此跟踪配置时,您可以通过使用原生跟踪 API 来检测您的 C/C++ 代码或使用 Trace
类来检测您的 Java 代码,从而在 profiler 时间轴中直观地标记重要的代码例程。
检查 Memory Profiler 中的 JNI 引用
如果您将应用部署到运行 Android 8.0 (API level 26) 或更高版本的设备,您现在可以使用 Memory Profiler 检查应用的 JNI 代码的内存分配。
在应用运行时,选择要检查的时间轴部分,然后从类列表上方的下拉菜单中选择 JNI heap,如下所示。然后,您可以像往常一样检查堆中的对象,并双击 Allocation Call Stack 选项卡中的对象,以查看 JNI 引用在代码中分配和释放的位置。

导入、导出和检查内存堆转储文件
您现在可以导入、导出和检查使用 Memory Profiler 创建的 .hprof
内存堆转储文件。
通过点击 profiler 的 Sessions 窗格中的 Start new profiler session 并选择 Load from file 来导入您的
.hprof
文件。然后,您可以在 Memory Profiler 中检查其数据,就像检查任何其他堆转储一样。
要保存堆转储数据以便稍后查看,请使用 Sessions 窗格中 Heap Dump 条目右侧的 Export Heap Dump 按钮。在出现的 Export As 对话框中,以 .hprof
文件名扩展名保存文件。
在应用启动期间记录 CPU 活动
您现在可以在应用启动期间记录 CPU 活动,如下所示
- 从主菜单中选择 Run > Edit Configurations。
- 在所需运行配置的 Profiling 选项卡下,勾选 Start recording a method trace on startup 旁边的复选框。
- 从下拉菜单中选择要使用的 CPU 记录配置。
- 通过选择 Run > Profile 将应用部署到运行 Android 8.0 (API level 26) 或更高版本的设备。
导出 CPU 跟踪
使用 CPU Profiler 记录 CPU 活动后,您可以将数据导出为 .trace
文件,以便与他人共享或稍后检查。
要导出跟踪,在记录 CPU 活动后,执行以下操作
- 右键点击要从 CPU 时间轴中导出的记录。
- 从下拉菜单中选择 Export trace。
- 导航到您要保存文件的位置,然后点击 Save。
导入和检查 CPU 跟踪文件
您现在可以导入和检查使用 Debug API 或 CPU Profiler 创建的 .trace
文件。(目前,您无法导入 System Trace 记录。)
通过点击 profiler 的 Sessions 窗格中的 Start new profiler session 并选择 Load from file 来导入您的跟踪文件。然后,您可以在 CPU Profiler 中检查其数据,方式与通常类似,但有以下例外情况
- CPU 时间轴上未显示 CPU 活动。
- 线程活动时间轴仅指示每个线程的跟踪数据可用之处,而非实际的线程状态(例如运行中、等待中或睡眠中)。
使用 Debug API 记录 CPU 活动
您现在可以通过使用 Debug API 检测应用,在 CPU Profiler 中开始和停止记录 CPU 活动。将应用部署到设备后,当应用调用 startMethodTracing(String tracePath)
时,profiler 会自动开始记录 CPU 活动;当应用调用 stopMethodTracing()
时,profiler 会停止记录。使用此 API 触发记录 CPU 活动时,CPU Profiler 会将 Debug API 显示为选定的 CPU 记录配置。
Energy Profiler
Energy Profiler 显示应用估计能耗的可视化表示,以及影响能耗的系统事件,如 wakelocks、警报和作业。
当您在连接的设备或运行 Android 8.0 (API 26) 或更高版本的 Android 模拟器上运行应用时,Energy Profiler 会显示在 Profiler 窗口底部的新的行中。
点击 Energy 行可最大化 Energy Profiler 视图。将鼠标指针放在时间轴中的条形上,即可查看 CPU、网络和位置 (GPS) 资源的能耗细分,以及相关的系统事件。
影响能耗的系统事件在 Energy 时间轴下方的 System 时间轴中显示。当您在 Energy 时间轴中选择时间范围时,事件窗格中会显示指定时间范围内的系统事件详细信息。
要查看系统事件(如 wakelock)的调用堆栈和其他详细信息,请在事件窗格中选择它。要跳转到负责系统事件的代码,请双击调用堆栈中的条目。
Lint 检查
Android Studio 3.2 包含许多新的和改进的 lint 检查功能。
新的 lint 检查有助于查找和识别常见的代码问题,从潜在可用性问题的警告到潜在安全漏洞的高优先级错误。
Java/Kotlin 互操作性 lint 检查
为确保 Java 代码与 Kotlin 代码良好互操作,新的 lint 检查强制执行Kotlin 互操作指南中描述的最佳实践。这些检查的例子包括检查是否存在 Nullability 注解、是否使用 Kotlin 硬关键字以及是否将 lambda 参数放在最后。
要启用这些检查,请点击 File > Settings(在 Mac 上是 Android Studio > Preferences)打开 Settings 对话框,导航到 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 部分,然后选择要启用的规则。

要在命令行构建中启用这些检查,请在 build.gradle
文件中添加以下内容
android {
lintOptions {
check 'Interoperability'
}
}
Slices 的 lint 检查
新的 Slices lint 检查有助于确保您正确构建 Slices。例如,如果您未为 Slice 分配主要操作,lint 检查会发出警告。
新的 Gradle 目标
使用新的 lintFix
Gradle 任务,将 lint 检查建议的所有安全修复直接应用于源代码。一个建议安全修复的 lint 检查示例是 SyntheticAccessor
。
元数据更新
各种元数据,例如服务强制转换检查,已更新以便 lint 检查适用于 Android 9 (API level 28)。
在新变体上运行 lint 时的警告
Lint 现在会记录基准是使用哪个变体和版本记录的,如果您在与创建基准时不同的变体上运行 lint,lint 会发出警告。
现有 lint 检查的改进
Android Studio 3.2 包含对现有 lint 检查的许多改进。例如,资源循环检查现在适用于其他资源类型,并且翻译检测器可以在编辑器中即时查找丢失的翻译。
问题 ID 更易于发现
问题 ID 现在显示在更多位置,包括在 Inspection Results 窗口中。这使得您更容易通过 build.gradle
中的 lintOptions
找到启用或禁用特定检查所需的信息。
有关更多信息,请参阅使用 Gradle 配置 lint 选项。
Data Binding V2
Data Binding V2 现在默认启用,并与 V1 兼容。这意味着,如果您有使用 V1 编译的库依赖项,您可以将其与使用 Data Binding V2 的项目一起使用。但请注意,使用 V1 的项目无法使用使用 V2 编译的依赖项。
D8 Desugaring
在 Android Studio 3.1 中,我们将 desugaring 步骤集成到 D8 工具中作为实验性功能,缩短了总体构建时间。在 Android Studio 3.2 中,默认启用 D8 的 desugaring。
新的代码缩小工具
R8 是一种新的代码缩小和混淆工具,取代了 ProGuard。您可以通过在项目的 gradle.properties
文件中包含以下内容来开始使用 R8 的预览版本
android.enableR8 = true
更改了多 APK 的默认 ABI
当构建针对不同 ABI 的多个 APK 时,插件默认不再为以下 ABI 生成 APK:mips
、mips64
和 armeabi
。
如果要构建针对这些 ABI 的 APK,必须使用NDK r16b 或更低版本,并在 build.gradle
文件中指定 ABI,如下所示
splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
注意:此行为更改也包含在 Android Studio 3.1 RC1 及更高版本中。
改进了 CMake 构建文件的编辑器功能
如果您使用 CMake 向项目添加 C 和 C++ 代码,Android Studio 现在包含改进的编辑器功能,可帮助您编辑 CMake 构建脚本,例如以下内容
- 语法高亮和代码补全:IDE 现在高亮并建议常见 CMake 命令的代码补全。此外,您可以通过按住 Control 键(在 Mac 上是 Command)并点击文件来导航到文件。
- 代码格式化:您现在可以使用 IntelliJ 的代码格式化选项来将代码样式应用于 CMake 构建脚本。
- 安全重构:IDE 内置的重构工具现在还会检查您是否正在重命名或删除 CMake 构建脚本中引用的文件。
导航外部头文件
在以前版本的 Android Studio 中使用 Project 窗口时,您只能导航和检查属于从本地项目构建的库的头文件。在此版本中,您现在还可以查看和检查包含在您导入到应用项目中的外部 C/C++ 库依赖项中的头文件。
如果您已在项目中包含 C/C++ 代码和库,请从主菜单中选择 View > Tool Windows > Project 打开 IDE 左侧的 Project 窗口,然后从下拉菜单中选择 Android。在 cpp 目录中,应用项目范围内的所有头文件都组织在每个本地 C/C++ 库依赖项的 include 节点下,如下所示。

默认启用原生 multidex
以前版本的 Android Studio 在将应用的调试版本部署到运行 Android API 级别 21 或更高版本的设备时启用了原生 multidex。现在,无论您是部署到设备还是构建用于发布的 APK,Android Gradle 插件都会为所有将 minSdkVersion=21
或更高版本设置为目标模块启用原生 multidex。
AAPT2 移至 Google 的 Maven 仓库
从 Android Studio 3.2 开始,AAPT2 (Android Asset Packaging Tool 2) 的来源是 Google 的 Maven 仓库。
要使用 AAPT2,请确保您的 build.gradle
文件中有 google()
依赖项,如下所示
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() } }
buildscript { repositories { google() // here jcenter() } dependencies { classpath("com.android.tools.build:gradle:3.2.0") } } allprojects { repositories { google() // and here jcenter() } }
新版本的 AAPT2 修复了许多问题,包括改进了对 Windows 上非 ASCII 字符的处理。
按需配置移除
Configure on demand 首选项已从 Android Studio 中移除。
Android Studio 不再将 --configure-on-demand
参数传递给 Gradle。
ADB 连接助手
新的ADB 连接助手提供了逐步说明,可帮助您通过 Android Debug Bridge (ADB) 连接设置和使用设备。
要启动助手,请选择 Tools > Connection Assistant。
ADB 连接助手在 Assistant 面板的一系列页面中提供说明、上下文控制和连接的设备列表。
模拟器改进
您现在可以在 Android 模拟器中随时保存和加载 AVD(Android 虚拟设备)快照,从而可以快速轻松地将模拟设备恢复到已知状态进行测试。使用 AVD 管理器编辑 AVD 时,您可以指定在 AVD 启动时加载哪个 AVD 快照。
保存、加载和管理 AVD 快照的控件现在位于模拟器 Extended controls 窗口的 Snapshots 选项卡中。
有关详细信息,请参阅快照。
有关模拟器新功能和更改的更多信息,请参阅模拟器发布说明。