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"

什么是全新的 Assistant

全新的 Assistant 会通知您 Android Studio 中的最新变化。

当您在全新安装或更新后启动 Android Studio 时,如果系统检测到有新信息需要显示,Assistant 便会打开。您也可以依次选择 Help > What's new in Android Studio 来打开 Assistant。

Android Jetpack

Android Jetpack 提供各种组件、工具和指南以消除重复性任务,来帮助加速 Android 开发,让您能够更快速、更轻松地构建高品质的可测试应用。Android Studio 进行了以下更新以支持 Jetpack。如需了解详情,请参阅 Jetpack 文档

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

在 Android Studio 3.2 中,Navigation Editor 是一项实验性功能。如需启用 Navigation Editor,请依次点击 File > Settings(在 Mac 上,则依次点击 Android Studio > Preferences),选择左侧窗格中的 Experimental 类别,选中 Enable Navigation Editor 旁边的复选框,然后重启 Android Studio。

如需了解详情,请参阅 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 新推出的应用服务模式会使用您的 App Bundle 针对每位用户的设备配置生成并提供经过优化的 APK,因此他们只需下载运行您的应用所需的代码和资源。您无需再构建、签署和管理多个 APK,而用户也可以下载经过进一步优化的更小的下载文件包。

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

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

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

布局编辑器中的示例数据

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

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

Slice

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

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

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

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

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 Profiler

请试用 Android Studio 3.2 中的以下全新 Android Profiler 功能。

会话

您现在可以将性能分析器数据保存为会话,以便日后重新访问和检查。性能分析器会一直保存您的会话数据,直到您重启 Android Studio 为止。

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

System Trace

CPU 性能分析器中,选择新的 System Trace 配置即可检查设备的系统 CPU 和线程活动。此跟踪配置是基于 systrace 构建的,可用于调查系统级问题,例如界面卡顿。

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

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

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

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

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

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

如需导入 .hprof 文件,请在性能分析器的 Sessions 窗格中点击 Start new profiler session ,然后选择 Load from file。然后,您可以像在任何其他堆转储中一样检查内存分析器中的数据。

如需保存堆转储数据以供日后查看,请使用 Sessions 窗格中 Heap Dump 条目右侧的 Export Heap Dump 按钮。在随即显示的 Export As 对话框中,使用 .hprof 文件扩展名保存文件。

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

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

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

导出 CPU 轨迹

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

如需在记录 CPU 活动后导出轨迹,请执行以下操作:

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

导入和检查 CPU 跟踪文件

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

如需导入跟踪文件,请在分析器的 Sessions 窗格中点击 Start new profiler session 图标 ,然后选择 Load from file。然后,您可以按照与往常相似的方式检查 CPU 性能分析器中的数据,但以下情况例外:

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

使用 Debug API 记录 CPU 活动

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

能耗性能分析器

能耗性能分析器能够以图形方式显示应用的估算能耗情况,以及影响能耗的系统事件(例如唤醒锁定、闹钟和作业)。

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

点击 Energy 行即可将“Energy Profiler”视图最大化。将鼠标指针放在时间轴中的条形上方,即可查看 CPU、网络和位置信息 (GPS) 资源的能耗明细,以及相关系统事件。

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

如需查看某个系统事件(如唤醒锁定)的调用堆栈和其他详细信息,请在事件窗格中选择该事件。如需前往引起某个系统事件的代码,请双击调用堆栈中的相应条目。

lint 检查

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

新的 lint 检查功能可帮助您查找和识别常见的代码问题,包括与潜在易用性问题有关的警告,以及与潜在安全漏洞有关的高优先级错误。

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

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

要启用这些检查,请依次点击 File > Settings(在 Mac 上,则依次点击 Android Studio > Preferences)打开 Settings 对话框,再依次选择 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 部分,然后选择要启用的规则。

如需对命令行 build 启用这些检查,请在 build.gradle 文件中添加以下内容:

        android {
            lintOptions {
                check 'Interoperability'
            }
        }
        
      

针对 Slice 的 lint 检查

针对 Slice 的新 lint 检查可以确保您构建 Slice 的方式正确无误。例如,如果您没有为 Slice 分配主要操作,lint 检查就会向您发出警告。

新的 Gradle 目标

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

元数据更新

各种元数据(例如服务投射检查)已针对 lint 检查进行更新,以便配合 Android 9(API 级别 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 脱糖

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

新的代码压缩器

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

      android.enableR8 = true
    

更改了针对多 APK 的默认 ABI

构建分别以不同 ABI 为目标的多个 APK 时,默认情况下,插件不会再针对以下 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 build 文件的编辑器功能

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

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

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

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

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

以前版本的 Android Studio 会在将应用的调试版本部署到搭载 Android API 级别 21 或更高级别的设备时启用原生 MultiDex。现在,无论您是要部署到设备,还是要构建 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 Connection Assistant

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

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

ADB Connection Assistant 在 Assistant 面板中的一系列页面中提供了说明、上下文相关控件以及已连接设备列表。

模拟器的改进

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

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

如需了解详情,请参阅快照

若要详细了解模拟器中的新变化以及变更内容,请参阅模拟器版本说明