Android Studio 预览版中的新功能

Android Studio 3.1.4 已发布稳定版。在此处下载

Android Studio 3.3 目前已发布 Canary 版和开发者版。

Android Studio 3.2 目前已发布测试版。

此页面概述了这些预览版本中的新功能和变化。

要了解与各版本有关的最新资讯,包括每个版本中的重要修正的列表,另请参阅版本更新

如果您在使用 Android Studio 预览版时遇到任何问题,请与我们联系。您的错误报告有助于改进 Android Studio。

Android Studio 3.3

本部分概述了 Android Studio 3.3 中的新功能和变化。

“Show Gradle Daemons”对话框

您现在可以在 Android Studio 中查看有效 Gradle 守护进程的列表。为此,请连按两次 Shift 键以开启 Search Everywhere 对话框,输入“Show Gradle Daemons”,然后点击随即显示的 Show Gradle Daemons 结果。

R8 默认处于启用状态

R8 是一种用于执行代码压缩和混淆的新工具,替代了 ProGuard,并且默认处于启用状态。如果您在使用 R8 时遇到问题,请报告错误。您可以停用 R8,为此只需将以下代码添加到项目的 gradle.properties 文件即可:

  1. android.enableR8 = false

单变体项目同步

将项目与编译配置同步,是让 Android Studio 了解项目结构的重要步骤。不过,对于大型项目,此过程可能非常耗时。如果您的项目使用了多个编译变体,那么您现在可以限定仅同步当前所选的变体,从而优化项目同步。

在使用 Android Studio 3.3 Canary 6 或更高版本同步项目时,IDE 会提示您启用此优化。

要手动启用此优化,请依次点击 File > Settings > Experimental > Gradle(在 Mac 上,则依次点击 Android Studio > Preferences > Experimental > Gradle),然后选中 Only resolve selected variants

注意:此优化目前支持仅包含 Java 编程语言的项目。例如,如果 IDE 在您的项目中检测到 Kotlin 代码或 C++ 代码,那么 IDE 不会自动启用此优化,您也不应手动启用此优化。

更新了“Project Structure”对话框

Configure conditional delivery - 图1

Android Studio 3.3 Canary 4 中更新了“Project Structure”对话框。在菜单栏中依次选择 File > Project Structure 以打开此对话框时,您可以使用以下新功能来管理项目的配置方式:

  • 以图形方式呈现项目的实际结构(如 Gradle 在项目同步时所解析的那样)。例如,您可以以图形方式呈现各模块的依赖关系图。
  • 在库依赖项有新版本时获取通知。
  • 通过对话框界面配置项目,而无需手动修改 build.gradle 文件。
    注意:如果您的现有编译配置文件包含复杂的 Groovy 脚本,则新 Project Structure 对话框的部分功能可能无法正常运行。此外,您无法使用 Project Structure 对话框来修改使用 Kotlin 编写的编译文件。

提供快速反馈

如果您已选择分享使用情况统计信息以帮助改进 Android Studio,则会在 IDE 窗口底部的状态栏中看到以下两个新图标:Configure conditional delivery - 图2

点击最能代表您目前使用 IDE 的体验的图标,就能提供反馈。在您执行此操作后,IDE 会发送使用情况统计信息,让 Android Studio 团队能够更好地了解您的感受。在某些情况下,例如,当您表示在使用 IDE 时有不好的体验时,您将有机会提供进一步的反馈。

如果尚未启用分享使用情况统计信息,您可以通过以下步骤予以启用:打开设置对话框(在 Mac 上,则打开偏好设置),依次转到外观和行为 > 系统设置 > 数据共享,然后选中向 Google 发送使用情况统计信息

移除了针对 C++ 自定义的选项

已从 Customize C++ Support 对话框中移除以下选项:

  • Exceptions Support (-fexceptions)
  • Runtime Type Information Support (-ftti)
    系统已对通过 Android Studio 创建的所有项目启用相应行为。

Android Studio 3.2

本部分概述了 Android Studio 3.2 中的新功能和变化。

什么是全新的 Assistant

Android Studio 3.2 推出了新的 Assistant 面板,您可在其中看到 Android Studio 中的最新变化。

在您启动 Android Studio 时,如果系统检测到有新信息需要显示,此面板便会打开。您还可以通过依次选择 Help > What's new in Android Studio 来打开 Assistant 面板。

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 旁边的复选框。

如需了解详情,请参阅导航编辑器文档

AndroidX 迁移

作为 Jetpack 的一部分,我们正在将 Android 支持库迁移到使用 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 App Bundle

Android App Bundle 是一种全新的上传格式,其中包含您应用的所有经过编译的代码和资源,但 APK 生成及签名则延后到 Google Play 商店来完成。

Google Play 的新应用服务模式名为“Dynamic Delivery”,该机制使用您的 App Bundle 针对每位用户的设备配置生成并提供经过优化的 APK,因此每位用户都只需下载运行您的应用所需的代码和资源。您无需再构建、签署和管理多个 APK,而用户也可以获得更小、更优化的下载内容。

此外,您还可以向应用项目添加动态功能模块,并将其包含在 App Bundle 中。借由 Dynamic Delivery,您的用户可以按需下载和安装您应用的动态功能。

要构建软件包,请依次选择 Build > Build Bundle(s)/APK(s) > Build Bundle(s)

如需了解详情,包括与构建和分析 Android App Bundle 有关的说明,请参阅 Android App Bundle 入门指南

布局编辑器中的示例数据

许多 Android 布局都包含运行时数据,而这可能导致在应用开发的设计阶段难以以图形的方式呈现布局的外观和风格。现在,您可以轻松地在填充有示例数据的布局编辑器中查看视图预览。在添加视图时,Configure conditional delivery - 图3 按钮会显示在设计窗口中的视图下方。点击此按钮即可设置设计时视图属性。您可以选择各种各样的示例数据模板,并指定用于填充相应视图的示例项目的数量。

要尝试使用示例数据,请将 RecyclerView 添加到新视图,点击视图下方的设计时属性按钮 Configure conditional delivery - 图4,然后从示例数据模板的轮播界面中选择一个选项。

切片

“切片”提供了一种全新的方式,让您能够将应用的部分功能嵌入到 Android 上的其他界面中。例如,借助切片,您可以在 Google 搜索建议中显示应用功能和内容。

Android Studio 3.2 不但包含一个内置模板,可以帮助您使用新的切片提供商 API 来扩展您的应用,而且还包含新的 Lint 检查功能,可以确保您在构建切片时遵循最佳做法。

要开始使用,请右键点击一个项目文件夹,然后依次选择 New > Other > Slice Provider

如需了解详情,包括如何测试切片交互,请参阅切片入门指南

IntelliJ IDEA 2018.1.1

核心 Android Studio IDE 已通过 2018.1.1 版本进行了更新,增加了 IntelliJ IDEA 中的相关改进。

Android 分析器

请试用 Android Studio 3.2 的最新版本中的全新 Android 分析器功能。

耗电量分析器

耗电量分析器能够以图形方式显示您应用的估算耗电量。

当您在搭载 Android 8.0 (API 26) 或更高版本的关联设备或 Android 模拟器中运行您的应用时,耗电量分析器便会显示为 Profiler 窗口底部的新行。

点击 Energy 行即可将 Energy Profiler 视图最大化。将鼠标指针放在时间轴中的条形上方,即可查看 CPU、网络和位置信息 (GPS) 资源,以及唤醒锁、闹钟和作业等系统事件的具体能耗情况。

会话

您现在可以将分析器数据保存为“会话”,以便日后重新访问和检查(分析器会一直保存您的会话数据,直到您重启 IDE 为止)。

在依次选择主菜单中的 Run > Profile 部署应用后,请点击 Configure conditional delivery - 图5 并从下拉菜单中选择某个应用进程,从而发起新的会话,具体操作如下所示。

Configure conditional delivery - 图6

在您记录方法轨迹捕获堆转储后,IDE 会将相应数据(以及您应用的网络活动)作为单独的条目添加到当前会话,并且您可以轻松地在记录之间来回切换以比较数据。要停止向当前会话添加数据,请点击 Configure conditional delivery - 图7

系统轨迹

CPU 分析器中,选择 System Trace 配置即可检查设备的系统 CPU 和线程 Activity。此轨迹配置是基于 systrace 构建的,并且可用于调查系统级问题,例如界面卡顿。

Configure conditional delivery - 图8

在使用这一新的轨迹配置时,您可以使用 Trace 类来设置代码,以便以图形方式标记分析器时间轴中的重要代码例程。

在内存分析器中检查 JNI 引用

如果您将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备,那么您现在可以使用内存分析器来检查应用 JNI 代码的内存分配情况。

在您的应用运行时,选择您想检查的一部分时间轴,然后从类列表上方的下拉菜单中选择 JNI heap,具体如下所示。然后,您可以像往常一样检查堆中的对象,并双击 Allocation Call Stack 标签以查看 JNI 引用已分配并发布到了代码中的哪些位置。

Configure conditional delivery - 图9

导入和导出内存堆转储文件

您现在可以导入和检查使用内存分析器创建的 .hprof 内存堆转储文件。

要导入 .hprof 文件,只需点击分析器的 Sessions 窗格中的 Start new profiler sessionConfigure conditional delivery - 图10,然后选择 Load from file 即可。然后,您可以像在任何其他堆转储中一样检查内存分析器中的数据。

在应用启动过程中记录 CPU Activity

您可以在应用启动过程中记录 CPU Activity,具体操作如下所示:

  • 从主菜单中依次选择 Run > Edit Configurations
  • 在所需运行配置的 Profiling 标签下,选中 Start recording a method trace on startup 旁边的方框。
  • 从下拉菜单中选择要使用的 CPU 记录配置。
  • 依次选择 Run > Profile,将应用部署到搭载 Android 8.0(API 级别 26)或更高版本的设备。

导出 CPU 轨迹

在您使用 CPU 分析器记录 CPU Activity 后,您可以将相应数据导出为 .trace 文件,以便与他人共享或日后进行检查。

要在记录 CPU Activity 后导出轨迹,请执行以下操作:

  • 右键点击您想从 CPU 时间轴中导出的记录。
  • 从下拉菜单中选择 Export trace
  • 转到您想保存文件的位置,然后点击 Save

导入和检查 CPU 轨迹文件

您现在可以导入和检查使用 Debug APICPU 分析器创建的 .trace 文件(目前,您无法导入系统轨迹记录)。

要导入轨迹文件,只需点击分析器的 Sessions 窗格中的 Start new profiler sessionConfigure conditional delivery - 图11,然后选择 Load from file 即可。然后,您可以按照与往常相似的方式检查 CPU 分析器中的数据,但以下情况例外:

  • CPU Activity 未显示在 CPU 时间轴上。
  • 线程 Activity 时间轴仅显示可在哪里获取各线程的轨迹数据,并不显示实际线程状态(例如正在运行、等待中或休眠中)。

使用 Debug API 记录 CPU Activity

现在,您可以使用 Debug API 设置您的应用以便开始和停止在 CPU 分析器中记录 CPU Activity。在您将应用部署到某个设备后,分析器会在您的应用调用 startMethodTracing(String tracePath)) 时自动开始记录 CPU Activity,并会在您的应用调用 stopMethodTracing()) 时停止记录。在记录使用此 API 触发的 CPU Activity 时,CPU 分析器会将 Debug API 显示为所选的 CPU 记录配置。

Lint 检查

Android Studio 3.2 包含许多用于 Lint 检查的新功能和经过改进的功能。

针对 Java/Kotlin 互操作性的 Lint 检查

为确保 Java 代码与 Kotlin 代码之间的良好互操性,新的 Lint 检查会强制执行 Kotlin 互操作指南中所述的最佳做法。这些检查包括查找是否存在空性注释、是否使用了 Kotlin 硬关键字、是否将 lambda 参数放置在最后等。

要启用这些检查,请依次转到 File > Preferences > Editor > Inspections,然后在 Kotlin Interoperability 下选中您想启用的规则,具体操作如下所示。然后,您只需从主菜单中依次选择 Analyze > Inspect Code 即可运行检查。

Configure conditional delivery - 图12

要为命令行编译启用这些检查,请将以下代码添加到 build.gradle 文件:

  1. android {
  2. lintOptions {
  3. check 'Interoperability'
  4. }
  5. }

针对切片的 Lint 检查

针对切片的新 Lint 检查可以确保您构建切片的方式正确无误。例如,如果您没有将主要操作分配到某个切片,Lint 检查就会向您发出警告。

更多新的 Lint 检查

除了以上部分中所述的针对切片和 Kotlin 互操作性的 Lint 检查以外,Android Studio 3.2 还实现了 20 项新的 Lint 检查,以帮助您查找和识别常见的代码问题。这些新检查包括与潜在易用性问题有关的警告,以及与潜在安全漏洞有关的高优先级错误。

新的 Gradle 目标

借助新的 lintFix Gradle 任务,您可以将 Lint 检查建议的所有安全修正直接应用于源代码。会建议您应用安全修正的 Lint 检查示例如下:SyntheticAccessor

元数据更新

各种元数据(例如服务投射检查)已针对 Lint 检查进行更新,以便配合 Android P 开发者预览版使用。

如果在新变体上运行 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 脱糖

在 Android Studio 3.1 中,我们已将脱糖步骤作为一项实验性功能集成到 D8 工具中,这能够减少总体构建时间。现在,使用 D8 进行脱糖的功能在 Android Studio 3.2 中默认处于开启状态。

新的代码压缩器

R8 是一种用于执行代码压缩和混淆的新工具,替代了 ProGuard。您只需将以下代码添加到项目的 gradle.properties 文件中,即可开始使用 R8 的预览版本:

  1. android.enableR8 = true

更改了针对多 APK 的默认 ABI

构建多个 APK 并让每个 APK 都分别定位到不同的 ABI 时,插件在默认情况下不再针对以下 ABI 生成 APK:mipsmips64armeabi

如果您想构建定位这些 ABI 的 APK,则必须使用 NDK r16b 或更低版本,并在 build.gradle 文件中指定相应 ABI,具体代码如下所示:

  1. splits {
  2. abi {
  3. include 'armeabi', 'mips', 'mips64'
  4. ...
  5. }
  6. }

注意:此行为更改也包含在 Android Studio 3.1 RC1 及更高版本中。

改进了针对 CMake 编译文件的编辑器功能

如果您使用 CMake 将 C 和 C++ 代码添加到您的项目,则 Android Studio 现在包含经过改进的编辑器功能供您修改 CMake 编译脚本,例如:

  • 语法突出显示和代码自动填充:IDE 现在会突出显示常用的 CMake 命令并提出相应的代码自动填充建议。此外,您只需点击某个文件,同时按 Ctrl 键(在 MacOS 上,则按 Command 键)即可转到此文件所在的位置。
  • 代码重新格式化:您现在可以使用 IntelliJ 的代码重新格式化选项将代码样式应用于 CMake 编译脚本。
  • 安全重构:IDE 内置的重构工具现在还会检查您是否正在重命名或删除 CMake 编译脚本中引用的文件。

浏览外部标头文件

在以前版本的 Android Studio 中使用 Project 窗口时,您只能浏览和检查从本地项目构建的库中包含的标头文件。在此版本中,您现在还可以查看和检查导入到应用项目的外部 C/C++ 库依赖项中包含的标头文件。

如果您已在项目中添加 C/C++ 代码和库,请在主菜单中依次选择 View >Tool Windows > Project,打开 IDE 左侧的 Project 窗口,然后从下拉菜单中选择 Android。在 cpp 目录中,应用项目范围内的所有标头都位于各本地 C/C++ 库依赖项的 include 节点下,具体如下所示。

Configure conditional delivery - 图13

原生多 dex 处理默认处于启用状态

以前版本的 Android Studio 会在将应用的调试版本部署到搭载 Android API 级别 21 或更高级别的设备时启用原生多 dex 处理。现在,无论您是要部署到设备还是要构建 APK 以供发布,Gradle 的 Android 插件都会针对所有设置为 minSdkVersion=21 或更高版本的模块启用原生多 dex 处理。

已将 AAPT2 移到 Google 的 Maven 代码库中

从 Android Studio 3.2 Canary 11 开始,AAPT2(Android 资源打包工具 2)的来源为 Google 的 Maven 代码库。

要使用 AAPT2,请确保您的 build.gradle 文件中包含 google() 依赖项,具体代码如下所示:

  1. buildscript {
  2. repositories {
  3. google() // here
  4. jcenter()
  5. }
  6. dependencies {
  7. classpath 'com.android.tools.build:gradle:3.2.0-alpha12'
  8. }
  9. } allprojects {
  10. repositories {
  11. google() // and here
  12. jcenter()
  13. }

新版本的 AAPT2 修正了许多问题,包括改进了在 Windows 上对非 ASCII 字符的处理。

移除了按需配置

Configure on demand 偏好设置已从 Android Studio 中移除。

Android Studio 不再将 —configure-on-demand 参数传递给 Gradle。

ADB Connection Assistant

新的 ADB Connection Assistant 提供了逐步说明,可以帮助您通过 Android 调试桥 (ADB) 关联来设置和使用设备。

要启用此 Assistant,请依次选择 Tools > Connection Assistant

ADB Connection Assistant 在 Assistant 面板中的一系列页面中提供了说明、环境控件以及关联设备列表。

模拟器的改进

您现在可以随时在 Android 模拟器中保存和加载 AVD (Android Virtual Device) 快照,以便快速轻松地让模拟设备返回已知状态以进行测试。在使用 AVD Manager 修改 AVD 时,您可以指定在 AVD 启动时加载哪个 AVD 快照。

用于保存、加载和管理 AVD 快照的控件现在位于模拟器的 Extended controls 窗口的 Snapshots 标签中。

如需了解详情,请参阅 Android 模拟器 27.3.0 Canary 版本说明