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。
  • 在导航库中,参数类型已从type 重命名为 argType
  • 已修复以下错误
    • 使用数据绑定库时,包含下划线的变量名会导致编译错误。
    • CMake 导致 IntelliSense 和其他 CLion 功能失败。
    • 添加 SliceProvider 会在未使用 androidx.* 库的项目中导致编译错误。
    • 某些 Kotlin 单元测试未运行。
    • 数据绑定问题导致 PsiInvalidElementAccessException
    • <merge> 元素有时会导致布局编辑器崩溃。

3.2.0 已知问题

注意:这些问题已在 Android Studio 3.2.1 中解决

  • 我们强烈建议不要使用 Kotlin 版本 1.2.70。

    Kotlin 版本 1.2.61 修复了一个可能导致 Android Studio 挂起的错误,但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 时,如果检测到有新信息要显示,则会打开助手。您也可以通过选择帮助 > Android Studio 中的新增功能来打开助手。

Android Jetpack

Android Jetpack 通过组件、工具和指导来帮助加速 Android 开发,这些组件、工具和指导可以消除重复性任务,使您能够更快、更轻松地构建高质量、可测试的应用。Android Studio 包含以下更新以支持 Jetpack。有关更多信息,请参阅Jetpack 文档

新的导航编辑器与 Android Jetpack 的导航组件集成,提供用于创建应用导航结构的可视化视图。导航编辑器简化了应用内目标之间导航的设计和实现。

在 Android Studio 3.2 中,导航编辑器是一个实验性功能。要启用导航编辑器,请点击文件 > 设置(Mac 上为Android Studio > 首选项),选择左侧窗格中的实验性类别,选中启用导航编辑器旁边的框,然后重新启动 Android Studio。

要了解更多信息,请阅读导航编辑器文档

AndroidX 迁移

作为 Jetpack 的一部分,我们正在使用androidx命名空间将 Android Support Libraries 迁移到新的 Android 扩展库。有关更多信息,请参阅AndroidX 概述

Android Studio 3.2 通过一项新的迁移功能来帮助您完成此过程。

要将现有项目迁移到 AndroidX,请选择重构 > 迁移到 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一样。

当您使用迁移到 AndroidX命令时,这两个标志都设置为true

如果您想立即开始使用 AndroidX 库,并且不需要转换现有的第三方库,您可以将android.useAndroidX标志设置为true,并将android.enableJetifier标志设置为false

Android App Bundle

Android App Bundle 是一种新的上传格式,其中包含应用的所有已编译代码和资源,但将 APK 生成和签名推迟到 Google Play 商店。

然后,Google Play 的新型应用服务模型使用您的应用包为每个用户的设备配置生成和提供优化的 APK,因此每个用户只需下载运行您的应用所需的代码和资源。您不再需要构建、签名和管理多个 APK,用户可以获得更小、更优化的下载。

此外,您可以向应用项目添加功能模块并将它们包含在应用包中。然后,您的用户可以按需下载和安装应用的功能。

要构建一个包,请选择构建 > 构建包/APK > 构建包

有关更多信息(包括构建和分析 Android App Bundle 的说明),请参阅Android App Bundle

布局编辑器中的示例数据

许多 Android 布局具有运行时数据,这使得在应用开发的设计阶段难以可视化布局的外观和感觉。您现在可以在布局编辑器中轻松查看填充了示例数据的视图预览。添加视图时,按钮将出现在设计窗口中视图的下方。单击此按钮以设置设计时视图属性。您可以从各种示例数据模板中进行选择,并指定用于填充视图的示例项目数量。

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

切片

切片提供了一种在 Android 上将应用功能的一部分嵌入到其他用户界面表面的新方法。例如,切片可以显示 Google 搜索建议中的应用功能和内容。

Android Studio 3.2 具有内置模板,可帮助您使用新的切片提供程序 API 扩展应用,以及新的 lint 检查,以确保您在构建切片时遵循最佳实践。

要开始使用,请右键单击项目文件夹,然后选择新建 > 其他 > 切片提供程序

要了解更多信息(包括如何测试切片交互),请阅读切片入门指南

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 分析器

在 Android Studio 3.2 中尝试以下新的Android 分析器功能。

会话

您现在可以将分析器数据保存为会话,以便稍后重新访问和检查。分析器会保留您的会话数据,直到您重新启动 IDE。

当您记录方法跟踪捕获堆转储时,IDE 会将该数据(以及您的应用的网络活动)作为单独的条目添加到当前会话中,您可以轻松地在记录之间来回切换以比较数据。

系统跟踪

CPU 分析器中,选择新的系统跟踪配置以检查设备的系统 CPU 和线程活动。此跟踪配置基于systrace,可用于调查系统级问题,例如 UI 卡顿。

使用此跟踪配置时,您可以通过使用原生跟踪 API检测您的 C/C++ 代码或使用Trace类检测您的 Java 代码,在分析器时间线上直观地标记重要的代码例程。

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

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

在应用运行时,选择要检查的时间线的一部分,然后从类列表上方的下拉菜单中选择JNI 堆,如下所示。然后,您可以像平时一样检查堆中的对象,并双击分配调用堆栈选项卡中的对象,以查看在代码中分配和释放 JNI 引用的位置。

导入、导出和检查内存堆转储文件

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

通过单击分析器的会话窗格中的开始新的分析器会话,然后选择从文件加载来导入您的.hprof文件。然后,您可以像处理任何其他堆转储一样在内存分析器中检查其数据。

要保存堆转储数据以供以后查看,请使用会话窗格中堆转储条目右侧的导出堆转储按钮。在出现的另存为对话框中,使用.hprof文件名扩展名保存文件。

记录应用启动期间的 CPU 活动

您现在可以记录应用启动期间的 CPU 活动,方法如下:

  1. 从主菜单中选择运行 > 编辑配置
  2. 在所需运行配置的分析选项卡下,选中启动时开始记录方法跟踪旁边的框。
  3. 从下拉菜单中选择要使用的 CPU 记录配置。
  4. 通过选择运行 > 分析将您的应用部署到运行 Android 8.0(API 级别 26)或更高版本的设备。

导出 CPU 跟踪

使用 CPU 分析器记录 CPU 活动后,您可以将数据导出为.trace文件,以便与他人共享或稍后检查。

记录 CPU 活动后要导出跟踪,请执行以下操作:

  1. 右键单击要从 CPU 时间线中导出的记录。
  2. 从下拉菜单中选择导出跟踪
  3. 导航到要保存文件的位置,然后单击保存

导入和检查 CPU 跟踪文件

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

点击性能分析器的**会话**面板中的**开始新的性能分析会话** 导入您的跟踪文件,然后选择**从文件加载**。然后,您可以像平时一样检查其数据,但以下例外情况除外。

  • CPU 活动不会在 CPU 时间轴上显示。
  • 线程活动时间轴仅指示每个线程的跟踪数据可用位置,而不指示实际的线程状态(例如运行、等待或休眠)。

使用 Debug API 记录 CPU 活动

您现在可以通过使用 Debug API 为您的应用添加工具,从而在 CPU 性能分析器中启动和停止记录 CPU 活动。将您的应用部署到设备后,当您的应用调用 startMethodTracing(String tracePath) 时,性能分析器会自动开始记录 CPU 活动;当您的应用调用 stopMethodTracing() 时,性能分析器会停止记录。在使用此 API 触发记录 CPU 活动时,CPU 性能分析器会显示**Debug API**作为选定的 CPU 记录配置。

能耗分析器

能耗分析器 显示您的应用的估计能耗可视化,以及影响能耗的系统事件,例如唤醒锁、闹钟和作业。

当您在连接的设备或运行 Android 8.0(API 级别 26)或更高版本的 Android 模拟器上运行应用时,能耗分析器会作为新行显示在**性能分析器**窗口的底部。

点击**能耗**行以最大化能耗分析器视图。将鼠标指针悬停在时间轴上的条形图上,即可查看 CPU、网络和位置(GPS)资源的能耗细分,以及相关的系统事件。

影响能耗的系统事件会在**能耗**时间轴下方的**系统**时间轴中指示。当您在**能耗**时间轴中选择时间范围时,事件面板会显示指定时间范围内的系统事件详细信息。

要查看系统事件(例如唤醒锁)的调用堆栈和其他详细信息,请在事件面板中选择它。要转到负责系统事件的代码,请双击调用堆栈中的条目。

Lint 检查

Android Studio 3.2 包含许多针对 Lint 检查 的新增和改进功能。

新的 Lint 检查可以帮助您查找和识别常见的代码问题,范围从有关潜在可用性问题的警告到有关潜在安全漏洞的高优先级错误。

Java/Kotlin 互操作性的 Lint 检查

为确保您的 Java 代码与 Kotlin 代码良好互操作,新的 Lint 检查将强制执行 Kotlin 互操作指南 中描述的最佳实践。这些检查的示例包括查找可空性注释的存在、使用 Kotlin 硬关键字以及将 lambda 参数放在最后。

要启用这些检查,请点击**文件 > 设置**(Mac 上为**Android Studio > 首选项**)以打开**设置**对话框,导航到**编辑器 > 检查 > Android > Lint > 互操作性 > Kotlin 互操作性**部分,然后选择要启用的规则。

要为命令行构建启用这些检查,请将以下内容添加到您的 build.gradle 文件中

        android {
            lintOptions {
                check 'Interoperability'
            }
        }
        
      

切片 (Slices) 的 Lint 检查

针对切片的新的 Lint 检查有助于确保您正确构造切片。例如,如果您没有为切片分配主要操作,Lint 检查会发出警告。

新的 Gradle 目标

使用新的 lintFix Gradle 任务将 Lint 检查建议的所有安全修复直接应用于源代码。建议应用安全修复的 Lint 检查示例是 SyntheticAccessor

元数据更新

已更新各种元数据(例如服务强制转换检查),以便 Lint 检查可以与 Android 9(API 级别 28)一起使用。

如果在新的变体上运行 Lint,则会发出警告

Lint 现在会记录基线记录的变体和版本,如果在与创建基线的变体不同的变体上运行 Lint,Lint 会发出警告。

对现有 Lint 检查的改进

Android Studio 3.2 包含对现有 Lint 检查的许多改进。例如,资源循环检查现在适用于其他资源类型,并且翻译检测器可以在编辑器中动态查找缺失的翻译。

问题 ID 更易于发现

问题 ID 现在显示在更多位置,包括在**检查结果**窗口中。这使您可以更轻松地找到所需信息,以便通过 build.gradle 中的 lintOptions 启用或禁用特定检查。

有关更多信息,请参阅 使用 Gradle 配置 Lint 选项

数据绑定 V2

数据绑定 V2 现在默认启用,并且与 V1 兼容。这意味着,如果您有使用 V1 编译的库依赖项,则可以将它们与使用数据绑定 V2 的项目一起使用。但是,请注意,使用 V1 的项目无法使用使用 V2 编译的依赖项。

D8 反糖化

在 Android Studio 3.1 中,我们将反糖化步骤集成到 D8 工具中作为一项实验性功能,从而减少了整体构建时间。在 Android Studio 3.2 中,使用 D8 进行反糖化默认启用。

新的代码压缩器

R8 是一个用于代码压缩和混淆的新工具,它取代了 ProGuard。您可以通过在项目的 gradle.properties 文件中包含以下内容来开始使用 R8 预览版

      android.enableR8 = true
    

更改了多 APK 的默认 ABI

构建多个 APK 时,每个 APK 都针对不同的 ABI,插件不再默认生成以下 ABI 的 APK:mipsmips64armeabi

如果您想构建针对这些 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 中使用**项目**窗口时,您只能导航和检查属于从本地项目构建的库的头文件。在此版本中,您现在还可以查看和检查包含在您导入到应用项目中的外部 C/C++ 库依赖项中的头文件。

如果您已经 在项目中包含 C/C++ 代码和库,请通过从主菜单中选择**视图 > 工具窗口 > 项目**来打开 IDE 左侧的**项目**窗口,然后从下拉菜单中选择**Android**。在**cpp**目录中,所有属于您的应用项目范围内的头文件都组织在每个本地 C/C++ 库依赖项的**include**节点下,如下所示。

默认启用原生多 dex

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

AAPT2 已移至 Google 的 Maven 存储库

从 Android Studio 3.2 开始,AAPT2(Android 资源打包工具 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 字符的处理。

删除按需配置

Android Studio 中已删除按需配置首选项。

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

ADB 连接助手

新的 ADB 连接助手 提供分步说明,以帮助您通过Android 调试桥 (ADB) 连接设置和使用设备。

要启动助手,请选择工具 > 连接助手

ADB 连接助手在助手面板中的一系列页面中提供说明、上下文控件和已连接设备列表。

模拟器改进

您现在可以在 Android 模拟器中随时保存和加载 AVD(Android 虚拟设备)的快照,从而快速轻松地将模拟设备返回到已知状态以进行测试。当您使用 AVD 管理器编辑 AVD 时,您可以指定在 AVD 启动时加载哪个 AVD 快照。

保存、加载和管理 AVD 快照的控件现在位于模拟器的**扩展控件**窗口中的**快照**选项卡中。

有关详细信息,请参阅 快照

有关模拟器新增内容和更改的更多信息,请参阅 模拟器发行说明