Android Studio 北极狐 | 2020.3.1 (2021年7月)

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

新的版本编号

Android Studio 的更新版本编号

我们已更改 Android Studio 的版本编号系统,使其更紧密地与 IntelliJ IDEA(Android Studio 基于的 IDE)保持一致。

在之前的编号系统中,此版本将被编号为 *Android Studio 4.3* 或版本 *4.3.0.1*。使用新的编号系统,它现在是 *Android Studio - 北极狐 | 2020.3.1* 或版本 *2020.3.1*。

Intellij 版本 旧名称 旧 - 编号系统 新 - 年份系统 新的版本名称
2020.3 4.3 4.3.0 2020.3.1 北极狐 | 2020.3.1

未来,Android Studio 版本号将按以下方式确定

<IntelliJ 版本年份>.<IntelliJ 主版本>.<Studio 主版本>.<Studio 次要/修补程序版本>

  • 前两个数字组表示特定 Android Studio 版本基于的 IntelliJ 平台的版本。对于此版本,它是版本 *2020.3*。
  • 第三个数字组表示 Studio 主版本,从 *1* 开始,每个主要版本递增 1。
  • 第四个数字组表示 Studio 次要/修补程序版本,从 *1* 开始,每个次要版本递增 1。
  • 我们还为每个主要版本提供一个版本名称,根据动物名称从 A 到 Z 递增。此版本名为 *北极狐*。

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 中的测试工作流程。

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

Context menu for running tests

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

要创建 Gradle 测试配置,请按照创建新的运行/调试配置中的说明选择 Gradle 模板。创建新配置后,它将显示在 Gradle 部分的编辑配置对话框中。

Edit test configurations in 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。单击刷新按钮会更新相应的更新步骤。

New persistent tool window in the upgrade assistant

针对非传递性 R 类的重构

您可以将非传递性 R 类与 Android Gradle 插件一起使用,以加快具有多个模块的应用程序的构建速度。这样做有助于防止资源重复,方法是确保每个模块的 R 类仅包含对其自身资源的引用,而不会从其依赖项中提取引用。这将导致更及时的构建以及相应的编译避免优势。

您可以通过转到重构 > 迁移到非传递性 R 类来访问此功能。

新的后台任务检查器

您可以使用新的后台任务检查器可视化、监视和调试应用程序的后台工作进程。要开始使用,请将您的应用部署到运行WorkManager 库 2.5.0 或更高版本的设备上,然后从菜单栏中选择查看 > 工具窗口 > 应用检查

Active workers in Background Task Inspector

您可以通过单击工作进程查看更详细的信息。例如,您可以查看工作进程的描述、其执行方式、其工作进程链的详细信息以及执行结果。

Worker Details tab

您还可以通过从表格中选择一个工作进程并从工具栏中单击显示图表视图来查看工作进程链的可视化表示。然后,您可以选择链中的任何工作进程以查看其详细信息,或者如果它当前已排队或正在运行,则可以停止它。要返回到表格,请单击显示列表视图

Background Task Inspector worker chain

为了帮助您调查执行失败的工作进程中的问题,您可以从表格中选择当前正在运行或已排队的工作进程,然后从工具栏中单击取消所选工作进程。您还可以使用所有标签下拉菜单按分配给它们的标签过滤表格中的工作进程。

数据库检查器更新

数据库检查器现在包含在新应用检查工具窗口中,您也可以在此窗口中找到新的后台任务检查器。从工具窗口栏打开应用检查工具窗口,或从菜单栏中选择查看 > 工具窗口 > 应用检查

从数据库检查器导出数据

在 Arctic Fox 中,您可以轻松地将数据库检查器中的数据库、表格和查询结果导出以保存、共享或在本地重新创建。当您在 Android Studio 中打开应用项目并在数据库检查器中检查该项目的应用时,您可以通过以下方式之一开始导出数据:

  • 数据库面板中选择数据库或表格,然后单击面板顶部的导出到文件
  • 右键单击数据库面板中的数据库或表格,然后从上下文菜单中选择导出到文件
  • 在选项卡中检查表格或查询结果时,单击表格或查询结果上方的导出到文件

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

Export Database dialog box

更新内存分析器的录制 UI

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

Memory allocations displayed in the Memory Profiler

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

  • 捕获堆转储:查看应用中在特定时间点正在使用内存的对象。
  • 记录原生分配:查看每个 C/C++ 对象在一段时间内的分配方式。
  • 记录 Java/Kotlin 分配:查看每个 Java/Kotlin 对象在一段时间内的分配方式。

以下是这三个选项的使用方法:

  • 要捕获堆转储,请选择捕获堆转储,然后选择记录。分析器完成捕获堆转储后,内存分析器 UI 将转换到显示堆转储的单独屏幕。

    Sample heap dump in Memory Profiler

  • 要在运行 Android 10 及更高版本的设备上记录原生分配,请选择记录原生分配,然后选择记录。录制将持续进行,直到您单击停止,之后内存分析器 UI 将转换到显示原生录制的单独屏幕。

    在 Android 9 及更低版本上,记录原生分配选项不可用。

  • 要记录 Java 和 Kotlin 分配,请选择记录 Java/Kotlin 分配,然后选择记录。如果设备运行的是 Android 8 或更高版本,内存分析器 UI 将转换到显示正在进行的录制的单独屏幕。您可以与录制上方的迷你时间线进行交互(例如,更改选择范围)。要完成录制,请选择停止

    Visualization of Java allocations in Memory Profiler

    在 Android 7.1 及更低版本上,内存分析器使用旧版分配记录,该记录会在您单击停止之前显示时间线上的记录。

刷新链接的 C++ 项目的更新

我们将与配置无关的文件从.cxx/文件夹移动到build/文件夹。CMake C++ 构建需要一个配置阶段,该阶段生成用于执行编译和链接步骤的 Ninja 项目。由 CMake 生成的项目生成成本很高,并且预计会在 gradle clean 中保留。因此,它们存储在一个名为.cxx/的文件夹中,位于build/文件夹旁边。通常,Android Gradle 插件会注意到配置更改并自动重新生成 Ninja 项目。但是,并非所有情况都能检测到。发生这种情况时,可以使用“刷新链接的 C++ 项目”选项手动重新生成 Ninja 项目。

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

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

Instrumentation test panel

跨各种 API 级别和外形规格测试您的应用是确保所有用户在使用您的应用时都能获得良好体验的最佳方法之一。

要利用此功能:

  1. 从 IDE 中心顶部的目标设备下拉菜单中选择选择多个设备

    Modify device set dialog

  2. 选择目标设备,然后单击确定

    Modify device set dialog

  3. 运行您的测试。

要在运行面板中查看测试结果,请转到查看 > 工具窗口 > 运行

新的测试结果面板允许您按状态、设备和 API 级别筛选测试结果。此外,您可以通过单击标题对每一列进行排序。通过单击单个测试,您可以分别查看每个设备的日志和设备信息。

StateFlow在数据绑定中的支持

对于使用协程的 Kotlin 应用,您现在可以使用StateFlow对象作为数据绑定源,以自动通知 UI 数据中的更改。您的数据绑定将是生命周期感知的,并且只有在 UI 在屏幕上可见时才会触发。

要在绑定类中使用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 会建议将该库导入到类和项目中。

在构建分析器中支持配置缓存

构建分析器现在可以识别项目何时未启用配置缓存,并将其作为优化选项提供。构建分析器会运行兼容性评估,告知您在启用项目中的配置缓存之前是否存在任何问题。

Configuration cache information in Build Analyzer

支持 Jetpack Compose 工具

我们现在为预览和测试使用Jetpack Compose的应用提供了更多支持。为了获得使用 Jetpack Compose 进行开发的最佳体验,您应该使用最新版本的 Android Studio Arctic Fox,以便您可以受益于智能编辑器功能,例如新的项目模板以及立即预览您的 Compose UI 的能力。

Compose 预览

现在可以使用以下 @Preview 方法 的参数

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

Compose preview UI

交互式预览

您可以使用此功能与 UI 组件交互,单击它们并查看状态如何变化。这是一种快速获得 UI 反应反馈和预览动画的方法。要启用它,请单击交互式图标 ,预览将切换模式。

要停止,请单击顶部工具栏中的停止交互式预览

Interactive preview UI

部署到设备

您可以使用此功能将 UI 代码片段部署到设备。这有助于在设备上测试代码的小部分,而无需启动完整的应用程序。

单击 @Preview 注解旁边的部署到设备图标 或预览顶部的图标,Android Studio 将把该 @Preview 部署到您已连接的设备或模拟器。

字面量的实时编辑

我们添加了字面量的实时编辑功能,以帮助使用 Compose 的开发者快速编辑代码中的字面量(字符串、数字、布尔值),并立即看到结果,而无需等待编译。此功能的目标是通过使代码更改几乎立即显示在预览、模拟器或物理设备上,来提高您的生产力。

Editing number and stringd update immediately in the preview and on device

布局检查器中的 Compose 支持

布局检查器允许您查看在已连接设备上运行的应用程序布局的详细信息。您可以与您的应用程序交互,并在工具中查看实时更新,以快速调试可能出现的任何问题。

您可以检查使用新的 Android 声明式 UI 框架 Jetpack Compose 编写的布局。无论您的应用程序是否完全使用 Compose 编写的布局,还是使用 Compose 和视图的混合布局,布局检查器都能帮助您了解布局在运行的设备上的呈现方式。

开始使用

要开始使用,请将您的应用程序部署到已连接的设备,然后通过选择查看 > 工具窗口 > 布局检查器打开布局检查器窗口。如果布局检查器没有自动连接到您的应用程序进程,请从进程下拉菜单中选择所需的应用程序进程。您应该很快就能在工具窗口中看到您的应用程序布局的呈现。要开始检查您的 Compose 布局,请选择呈现中可见的布局组件,或从组件树中选择它。

Layout inspector UI

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

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

改进的部署下拉菜单

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

此外,如果您尝试将项目启动到与之关联有错误或警告的设备,Android Studio 现在将向您发出警告。

新的 Wear OS 配对助手

新的 Wear OS 配对助手指导开发者逐步完成将 Wear OS 模拟器与物理或虚拟手机直接在 Android Studio 中配对的过程。该助手可以帮助您在手机上安装正确的 Wear OS 伴侣应用程序,并在两台设备之间建立连接。您可以通过转到设备下拉菜单 > Wear OS 模拟器配对助手来开始使用。

Demo of the Wear OS pairing assistant

响应式布局模板

Android Studio Arctic Fox 现在包含一个新的布局模板,该模板可以适应各种显示尺寸和应用程序调整大小,例如手机、折叠式手机、平板电脑和分屏模式。创建新项目或模块时,选择响应式活动模板以创建具有动态调整大小组件的布局。

Responsive layout template in small screen Responsive layout template in mid screen Responsive layout template in large screen

要开始使用,请导航到文件 > 新建,选择新建项目新建模块,然后选择响应式活动模板。

Responsive layout template in new project wizard

布局编辑器的辅助功能扫描程序

我们在 Android Studio 中集成了 Android 辅助功能测试框架,以帮助您查找布局中的辅助功能问题。该工具报告辅助功能相关问题,并为一些常见问题(例如缺少内容说明或对比度低)提供建议的修复方法。要启动面板,请单击布局编辑器中的错误报告按钮

Demo of the Accessibility Scanner

对 Apple 芯片的支持

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

并非所有 SDK 和 NDK 命令行工具都提供支持。您可能必须在计算机上运行 Rosetta 2 才能运行某些工具。

Apple silicon support

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 Patch 4 (2021 年 12 月)

此小更新包括以下错误修复

  • Android Gradle 插件
    • VariantOutput.version 设置 Provider 可能与配置缓存冲突
    • gradeResValues.xml 在发布签名时未更新
  • D8/R8
    • 在 R8 缩小生成的类构造函数中抛出 java.lang.ClassCastException
    • dex 合并期间无法访问的类型调整
    • java.lang.VerifyError:验证器未能验证,因为无法从 Reference.java.lang.Object 类型的对象访问实例字段
  • Lint
    • 禁用 MediaCapabilities lint 检查
    • 启用 shrinkResources 时,Lint 报告错误的 [Instantiable] 错误
  • 模板
    • 导入模块选项灰显

有关更多信息,请参阅 2020.3.1 Patch 4 博客文章

Android Studio Arctic Fox | 2020.3.1 Patch 3 (2021 年 10 月)

此小更新包括以下错误修复

  • Android Gradle 插件
    • lint 独立插件无法正确处理 gradleApi() 依赖项
    • 在 Studio 外运行 Gradle 构建时触发 JPS 构建
    • 在同时包含生成源的处理器的项目中同时启用 KSP 和 Kapt 会破坏 BundleLibraryClassesInputs
  • C++ 编辑器
    • 由于后台长时间进行 JniReferencesSearch 计算,UI 冻结
  • 数据库检查器
    • 允许保存数据库
    • 无法使用路径中有空格的应用程序检查/数据库检查器导出数据
  • Dexer (D8)
    • Java lambda 在子类化子类时会导致意外行为
  • Shrinker (R8)
    • R8 缩小期间出现 Cannot constrain type 错误
    • 执行 R8 3.0.69(来自 AGP 7.0.2)和 3.0.72 时出现问题

有关更多信息,请参阅 2020.3.1 Patch 3 博客文章

Android Studio Arctic Fox | 2020.3.1 Patch 2 (2021 年 9 月)

此小更新包括以下错误修复

  • Android Gradle 插件
    • 从 AS Arctic Fox Canary 7 升级到 Canary 8 后,Gradle 同步启动了 10 次
    • 反糖化和可重复构建
  • C++ 构建
    • 如果使用 tasks.whenTaskAdded 闭包,Android Gradle Plugin 7.0.0 不会在 APK 中包含 jniLibs
  • 编辑
    • MergedManifestRefreshListener 在 Arctic Fox 中陷入无限循环
  • Lint
    • “lint 检查的 lint 检查”未运行
  • Shrinker (R8)
    • 在 AGP7 中使用 R8 运行构建时出现 ClassNotFoundException

有关更多信息,请参阅 2020.3.1 Patch 2 博客文章

Android Studio Arctic Fox | 2020.3.1 Patch 1 (2021 年 8 月)

此更新包含以下问题的修复

  • Android Gradle 插件
    • TypedefRemover 使用 ASM5,与需要 ASM7 的 JDK 11 源代码不兼容
    • 某些新的 DSL 块无法从 AGP 7.0.0 中的 Groovy DSL 使用
    • AGP 7.0.0 稳定版在 libraryVariants.all{applicationId} 上抛出 ExternalApiUsageException
  • C++ 调试器
    • 在 Mac M1 上启动本机调试会话时,AS Arctic Fox 出现错误,“发现损坏的 LLDB 配置”
  • 资源管理器
    • (Windows) 新建 > 矢量资源 > picture.svg:生成的 xml 中无效的“减号”字符xml
  • Shrinker (R8)
    • BridgeHoisting 中的 NPE
    • 升级到 7.0.0 后,R8 崩溃并出现“内联后方法中出现意外用法”错误

有关更多信息,请参阅 2020.3.1 Patch 1 博客文章