Android Studio Arctic Fox | 2020.3.1(2021 年 7 月)

Android Studio Arctic Fox 是一个主要版本,包含各种新功能和改进。

新版本编号系统

更新了 Android Studio 的版本编号系统

我们更改了 Android Studio 的版本编号系统,使其与 IntelliJ IDEA(Android Studio 所基于的 IDE)更一致。

在以前的编号系统中,此版本应为 Android Studio 4.3 或 4.3.0.1。采用全新的编号系统后,现在版本为 Android Studio - Arctic Fox | 2020.3.1 或 2020.3.1。

Intellij 版本 旧名称 旧 - 编号系统 新 - 年份系统 新版本名称
2020.3 4.3 4.3.0 2020.3.1 Arctic Fox | 2020.3.1

今后,Android Studio 版本号的确定方式如下:

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • 前两组数字表示特定 Android Studio 版本所基于的 IntellIj 平台版本。对于此版本,即为 2020.3。
  • 第三组数字表示 Studio 的主要版本,从 1 开始,每个主要版本递增 1。
  • 第四组数字表示 Studio 的次要版本/补丁程序版本,从 1 开始,每个次要版本递增 1。
  • 此外,我们还将为每个主要版本提供版本名称,分别以 A 到 Z 的动物来命名。此版本名为 Arctic Fox。

更新了 Android Gradle 插件的版本编号系统

我们更新了 Android Gradle 插件 (AGP) 的版本编号系统,以使其更接近底层 Gradle 构建工具。因此,AGP 7.0 是继 AGP 4.2 之后的下一个版本。

如需了解详情,请参阅 AGP 版本说明中的版本编号变更

Android Gradle 插件 7.0.0

最新版本的 Android Gradle 插件包含许多更新。如需了解详情,请阅读完整的 Android Gradle 插件版本说明

单元测试现在使用 Gradle 测试运行程序

为提高测试作业的总体一致性,现在 Android Studio 在默认情况下使用 Gradle 运行所有单元测试。在很多情况下,此更改不会影响 IDE 中的测试工作流。

例如,当您点击上下文菜单中的 Run 命令(在您右键点击测试类时可见)或对应的边线操作 时,Android Studio 将默认使用 Gradle 运行配置来运行单元测试。

用于运行测试的上下文菜单

但是,Android Studio 不再识别现有的 Android JUnit 运行配置,因此您应将可能另存为项目文件的 Android JUnit 运行配置迁移到 Gradle 运行配置。

如需创建 Gradle 测试配置,请按照创建新的运行/调试配置中的说明选择 Gradle 模板。创建新配置后,配置会显示在 Gradle 部分的 Edit Configurations 对话框中:

在 Android Studio 中编辑测试配置

如果您要检查不再识别的 Android JUnit 配置,可以执行以下两种操作之一:

  • 在文本编辑器中打开手动保存的配置。这些文件的位置由用户指定,但文件通常显示在 <my-app>/.idea/runConfigurations/ 中。
  • <my-app>/.idea/workspace.xml 中查找临时配置,并在 <component name="RunManager" ...> 节点下查找。例如:

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

改进了适用于 AGP 的升级助理

适用于 Android Gradle 插件的升级助理现在有一个持久性工具窗口,其中列出了将完成的步骤列表。 工具窗口的右侧还会显示其他信息。如有需要,还可以选择其他 AGP 版本进行升级。点击 Refresh 按钮将更新相应的更新步骤。

升级助理中的新持久性工具窗口

重构非传递 R 类

可以将非传递 R 类与 Android Gradle 插件一起使用,以便为具有多个模块的应用构建更快的 build。这样做有助于确保每个模块的 R 类仅包含对其自身资源的引用,而不会从其依赖项中提取引用,从而帮助防止资源重复。这样可以获得较新的 build,以及避免编译的相应优势。

如需使用此功能,请依次转到 Refactor > Migrate to Non-transitive R Classes

新增了后台任务检查器

您可以使用新增的后台任务检查器直观呈现、监控和调试应用的后台工作器。如需开始使用,请将您的应用部署到搭载 WorkManager 库 2.5.0 或更高版本的设备中,然后从菜单栏中依次选择 View > Tool Windows > App Inspection

后台任务检查器中的活跃工作器

点击工作器可查看更详细的信息。例如,可以查看工作器的说明、执行方式、工作器链的详细信息以及执行结果。

“Worker Details”标签页

还可以从表中选择一个工作器并点击工具栏上的 Show Graph View 图标 ,查看工作器链的直观呈现形式。然后,可以选择链中的任意工作器以查看其详细信息,如果某工作器当前已加入队列或正在运行,还可停止运行该工作器。如需返回表,请点击 Show List View 图标

后台任务检查器工作器链

为帮助调查执行失败的工作器出现的问题,您可以停止当前正在运行或已加入队列的工作器,方法是从表中选择相应工作器,然后点击工具栏中的 Cancel Selected Worker 图标 。您还可以使用 All tags 下拉菜单,根据您为工作器分配的标记来过滤表中的工作器。

更新了 Database Inspector

Database Inspector 现已包含在新的 App Inspection 工具窗口中,在该窗口中,您还可以找到新的后台任务检查器。从工具窗口栏打开 App Inspection 工具窗口,或从菜单栏依次选择 View > Tool Windows > App Inspection

从 Database Inspector 中导出数据

在 Arctic Fox 中,您可以轻松地从 Database Inspector 中导出数据库、表和查询结果,以便在本地保存、共享或重新创建。在 Android Studio 中打开一个应用项目并在 Database Inspector 中检查该项目的应用时,可以采用以下任一方法开始导出数据:

  • Databases 面板中选择数据库或表,然后点击面板顶部附近的 Export to file
  • 右键点击 Databases 面板中的数据库或表,然后从上下文菜单中选择 Export to file
  • 在标签页中检查表或查询结果时,点击表或查询结果上方的 Export to file

选择导出操作后,请使用 Export 对话框帮助您完成最后的步骤,如下所示。根据是否需要尝试导出数据库、表或查询结果,可以选择使用以下一种或多种格式导出数据:DB、SQL 或 CSV。

“Export Database”对话框

更新了内存分析器中的录制界面

我们整合了内存分析器界面 (UI),用于不同的录制活动,例如捕获堆转储和录制 Java、Kotlin 以及原生内存分配。

内存分析器中显示的内存分配

内存分析器提供以下选项:

  • Capture heap dump:查看应用中在特定时间点使用内存的对象。
  • Record native allocations:查看每个 C/C++ 对象在一段时间内的分配情况。
  • Record Java/Kotlin allocations:查看每个 Java/Kotlin 对象在一段时间内的分配情况。

三个选项的使用方式如下:

  • 如需捕获堆转储,请选择 Capture heap dump,然后选择 Record。在分析器捕获堆转储后,内存分析器界面将转换到显示堆转储的单独屏幕上。

    内存分析器中的堆转储示例

  • 如需在搭载 Android 10 及更高版本的设备上录制原生分配情况,请选择 Record native allocations,然后选择 Record。录制会持续到您点击 Stop 图标 后,内存分析器界面会转换到显示原生录制的单独屏幕。

    在 Android 9 及更低版本中,Record native allocations 选项不可用。

  • 如需录制 Java 和 Kotlin 分配情况,请选择 Record Java / Kotlin allocations,然后选择 Record。如果设备搭载的是 Android 8 或更高版本,则内存分析器界面将转换为显示正在进行录制的单独屏幕。可以与录制上方的迷你时间轴进行交互(例如,更改选择范围)。如需完成录制,请选择 Stop 图标

    在内存分析器中直观呈现 Java 分配

    在 Android 7.1 及更低版本上,内存分析器使用旧版分配录制功能,它会在时间轴上显示录制内容,直到您点击 Stop

更新了关联的 C++ 项目的更新

我们已将与配置无关的文件从 .cxx/ 文件夹移到了 build/ 文件夹中。CMake C++ 构建需要一个配置阶段,该阶段生成用于执行编译和链接步骤的 Ninja 项目。由 CMake 生成的项目开销高昂,并且在 Gradle 清除操作后仍应保留下来。因此,它们会存储在 build/ 文件夹旁的 .cxx/ 文件夹中。通常,Android Gradle 插件会注意到配置变更,并自动重新生成 Ninja 项目。然而,并非所有情况都能被检测到。如果发生未被检测到的情况,可以使用“Refresh Linked C++ Project”选项手动重新生成 Ninja 项目。

用于多设备测试的新测试矩阵

现在可以在多台设备上并行运行插桩测试,并且可以使用专门的插桩测试结果面板进行调查。利用此面板,可以确定测试失败的原因在于 API 级别还是硬件属性。

插桩测试面板

为确保所有用户都获得良好的应用使用体验,最好的方法之一就是采用各种 API 级别和设备类型测试您的应用。

为了充分利用这项功能,请执行以下操作:

  1. 在 IDE 正上方的目标设备下拉菜单中选择 Select Multiple Devices

    “Modify device set”对话框

  2. 选择目标设备,然后点击 OK

    “Modify device set”对话框

  3. 运行测试。

如需在 Run 面板中查看测试结果,请依次转到 View > Tool Windows > Run

使用新的测试结果面板,您可以按状态、设备和 API 级别过滤测试结果。此外,您还可以点击各列的标题对列进行排序。点击单个测试,可以单独查看每个设备的日志和设备信息。

数据绑定中的 StateFlow 支持

对于使用协程的 Kotlin 应用,您现在可以使用 StateFlow 对象作为数据绑定来源,自动将数据变化通知给界面。数据绑定将具有生命周期感知能力,并且仅在屏幕上显示界面时才会触发。

如需将 StateFlow 对象与绑定类一起使用,需要指定生命周期所有者,以定义 StateFlow 对象的范围,并在布局中使用绑定表达式将 ViewModel 组件的属性和方法分配给相应的视图,如下面的示例所示:

class ViewModel() {
   val username: StateFlow<String>
}
<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

如果您当前正在使用运行 AndroidX 的 Kotlin 应用,StateFlow 支持将自动包含在数据绑定功能(包括协程依赖项)中。

如需了解详情,请参阅使用可观察的数据对象

改进了建议导入的内容

我们改进了建议导入的内容功能支持的库数量,并更频繁地更新索引。建议导入的内容功能可帮助您快速轻松地将某些 Google Maven 工件导入类和 Gradle 项目。当 Android Studio 检测到来自某些 Google 库的未解析符号时,IDE 会建议将相应的库导入该类和项目中。

在 Build Analyzer 中支持配置缓存

现在,Build Analyzer 可以识别项目何时没有启用配置缓存,并将其作为优化建议提供。在启用之前,Build Analyzer 会评估兼容性,让您了解为项目启用配置缓存是否会发生问题。

Build Analyzer 中的配置缓存信息

支持 Jetpack Compose 工具

我们现已对使用 Jetpack Compose 的预览和测试应用提供额外的支持。为了在使用 Jetpack Compose 进行开发时获得最佳体验,您应使用最新版本的 Android Studio Arctic Fox,以便从智能编辑器功能中受益,这些功能包括“新建项目”模板以及即时预览 Compose 界面等。

Compose 预览

@Preview 方法现在提供以下参数:

  • showBackground:开启和关闭预览的背景。
  • backgroundColor:设置仅在预览界面中使用的颜色。
  • uiMode:此新参数可采用任何 Configuration.UI_* 常量,且允许更改预览的行为,例如,将其设置为夜间模式以了解主题背景如何反应。

Compose 预览界面

互动式预览

可以使用此功能与界面组件交互,点击组件并查看状态如何变化。通过这种方式,可以快速获得有关界面如何反应的反馈,并可快速预览动画。如要启用此模式,只需点击 Interactive 图标 ,系统即会切换预览模式。

如需停止此模式,请点击顶部工具栏中的 Stop Interactive Preview

互动式预览界面

部署到设备

可以使用此功能将界面代码段部署到设备。这有助于测试设备中的一小部分代码,而无需启动整个应用。

点击 @Preview 注解旁边或预览顶部的 Deploy to Device 图标 ,Android Studio 会将该 @Preview 部署到连接的设备或模拟器上。

实时修改字面量

我们添加了实时编辑文本功能,以帮助使用 Compose 的开发者快速编辑代码中的文本(字符串、数字、布尔值),并立即查看结果,而无需等待编译。此功能的目标是在预览、模拟器或物理设备中近乎即时地显示代码更改,从而帮助提高工作效率。

在预览和设备上立即修改数字和字符串更新

布局检查器中的 Compose 支持

通过布局检查器,可以深入了解在连接设备上运行的应用布局的相关详细信息。在该工具中,您可以与您的应用交互并查看实时更新,以快速调试可能出现的问题。

可以检查使用全新 Android 声明式界面框架(即 Jetpack Compose)编写的布局。无论您的应用是使用完全用 Compose 编写的布局,还是使用 Compose 和 View 的混合布局,布局检查器都可以帮助您了解您的布局如何在正在运行的设备上渲染。

使用入门

如需开始使用,请将您的应用部署到连接的设备上,然后通过依次选择 View > Tool Windows > 布局检查器 打开 布局检查器 窗口。如果布局检查器未自动连接到您的应用进程,请从进程下拉菜单中选择所需的应用进程。您应该很快就会在工具窗口中看到应用的布局。如需开始检查 Compose 布局,请选择渲染中显示的布局组件,或从 Component Tree 中选择该组件。

布局检查器界面

Attributes 窗口会显示有关当前所选 Compose 函数的详细信息。在该窗口中,您可以检查函数的参数及其值,包括修饰符和 lambda 表达式。对于 lambda 表达式,检查器提供了一个快捷方式,可帮助您导航到源代码中的表达式。

布局检查器会显示调用堆栈中所有用于向应用的布局发送组件的 Compose 函数。在许多情况下,这包括 Compose 库在内部调用的 Compose 函数。如果只想在应用直接调用的 Component Tree 中看到 Compose 函数,请点击过滤器 操作,这可能有助于将树中的节点数量减少为您可能要检查的节点数量。

改进了部署下拉菜单

设备下拉菜单现在会区分所选设备配置中的不同类型的错误。图标和样式的变更现在分成了错误(导致配置失败的设备选择)和警告(可能导致意外行为但仍可运行的设备选择)。

此外,如果尝试将项目启动到存在相关错误或警告的设备,Android Studio 将发出警告。

新增了 Wear OS 配对助理

新增的 Wear OS 配对助理直接在 Android Studio 中逐步引导开发者将 Wear OS 模拟器与实体或虚拟手机配对。该配对助理可以帮助您在手机上安装正确的 Wear OS Companion 应用,并在两台设备之间建立连接。如需开始使用,请依次转到 device dropdown > Wear OS Emulator Pairing Assistant

Wear OS 配对助理演示

自适应布局模板

Android Studio Arctic Fox 现在包含一个全新的布局模板,该模板可以适应不同的显示尺寸和应用大小(例如手机、可折叠设备、平板电脑和分屏模式)。创建新项目或模块时,请选择 Responsive Activity 模板,以创建包含可动态调整大小的组件布局。

小屏幕中的自适应布局模板 中等屏幕中的自适应布局模板 大屏幕中的自适应布局模板

如需开始使用,请转到 File > New,选择 New ProjectNew Module 中的任意一项,然后选择 Responsive Activity 模板。

新建项目向导中的自适应布局模板

用于布局编辑器的无障碍功能扫描仪

我们已在 Android Studio 中集成了 Android 无障碍功能测试框架,用于帮助您查找布局中的无障碍功能问题。该工具会报告与无障碍功能相关的问题,并针对一些常见问题(例如缺少内容说明或对比度较低)提供修正建议。如需启动该工具的面板,请点击布局编辑器中的错误报告按钮

无障碍功能扫描仪演示

Apple Silicon 支持

Android Studio 和 Android 模拟器现在包含在运行 Apple Silicon (arm64) 硬件架构(包括相应的模拟器系统映像)时对核心开发者工作流的初步支持。

目前尚无法为所有 SDK 和 NDK 命令行工具提供支持。您可能必须在计算机上运行 Rosetta 2 才能运行某些工具。

Apple Silicon 支持

Arctic Fox 的已知问题

本部分将介绍 Android Studio Arctic Fox 当前已知的问题。

补丁无法在安装了 v3.6-v4.1 的 Windows 上正常使用

补丁可能无法在安装了从 v3.6-v4.1 到 Android Studio Arctic Fox 稳定版的 Windows 平台上正常使用。

补丁版本

以下是 Android Studio Arctic Fox 的补丁版本。

Android Studio Arctic Fox | 2020.3.1 补丁 4(2021 年 12 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • VariantOutput.version 设置 Provider 可能会因为配置缓存而中断
    • 在签名以供发布时未更新 gradeResValues.xml
  • D8/R8
    • 在由 R8 压缩的 build 中,在类的构造函数中抛出 java.lang.ClassCastException
    • dex 合并期间无法达到的类型调整
    • java.lang.VerifyError:验证程序验证失败,因为无法从 Reference.java.lang.Object 类型的对象访问实例字段
  • Lint
    • 停用 MediaCapabilities lint 检查
    • 启用 shrinkResources 后,Lint 会报告假正例[可实例化]错误
  • 模板
    • Import Module 选项呈灰显状态

如需了解详情,请参阅 2020.3.1 补丁程序 4 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 3(2021 年 10 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • lint 独立插件无法正确处理 gradleApi() 依赖项
    • 在 Studio 之外运行 Gradle build 时触发了 JPS build
    • 如果某个项目中的 KSP 和 Kapt 都包含可生成源代码的处理器,则同时启用 KSP 和 Kapt 会中断 BundleLibraryClassesInputs
  • C++ 编辑器
    • 在后台进行长时间的 JniReferencesSearch 计算时界面会卡顿
  • Database Inspector
    • 允许保存数据库
    • 如果路径中含有空格,就无法使用 App Inspection/Database Inspector 导出数据
  • Dexer (D8)
    • 在为子类创建子类时,Java lambda 会导致出现意外行为
  • 缩减器 (R8)
    • r8 缩减大小过程中会出现 Cannot constrain type 错误
    • 执行 R8 3.0.69(来自 AGP 7.0.2)和 3.0.72 时会出现问题

如需了解详情,请参阅 2020.3.1 补丁 3 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 2(2021 年 9 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • 在从 AS Arctic Fox Canary 7 升级到 Canary 8 的过程中,Gradle 同步启动了 10 次
    • 脱糖和可重现的 build
  • C++ build
    • 如果使用了 tasks.whenTaskAdded 闭包,Android Gradle 插件 7.0.0 不会在 APK 中包含 jniLibs
  • 修改
    • MergedManifestRefreshListener 在 Arctic Fox 中陷入无限循环
  • Lint
    • “针对 lint 检查的 lint 检查”未运行
  • 缩减器 (R8)
    • 在 AGP7 中使用 R8 运行 build 时抛出 ClassNotFoundException

如需了解详情,请参阅 2020.3.1 补丁 2 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 1(2021 年 8 月)

此更新修复了以下问题:

  • Android Gradle 插件
    • TypedefRemover 使用 ASM5,与需要使用 ASM7 的 JDK 11 源代码不兼容
    • 无法在 AGP 7.0.0 中通过 Groovy DSL 使用部分新的 DSL 代码块
    • AGP 7.0.0 稳定版在执行到 libraryVariants.all{applicationId} 时会抛出 ExternalApiUsageException
  • C++ 调试程序
    • 在 Mac M1 上启动原生调试会话时,系统会出现 AS Arctic Fox 错误“Found broken LLDB configuration”
  • Resource Manager
    • (Windows) New > Vector Asset > picture.svg:生成的 xml 文件中的“减号”字符 (-) 无效
  • 缩减器 (R8)
    • BridgeHoisting 中的 NPE
    • 升级到 7.0.0 后,R8 会崩溃,并显示“Unexpected usage left in method after inline”错误

如需了解详情,请参阅 2020.3.1 补丁 1 博文