Android Studio Dolphin | 2021.3.1 发布,快来看看有什么更新吧~

15,202 阅读8分钟

原文链接 :developer.android.com/studio/rele…

来了来了,Android Studio 又更新啦,本次代号是 Dolphin ,也就是海豚,那么这次的坑会是大海吗?本次更新主要内容是 Compose、Wear 和 Logcat 上的更新支持,可以看到 Compose 生态终于越来越成熟了。

如果你对这上面三部分完全不感兴趣,其实完全可以不用过来躺坑。

一、Compose 新功能

本次新版本包含大量有 Jetpack Compose 的新功能和功能改进。

Compose Animation Coordination

如果你的动画是用于 composable preview,那么现在可以使用 Animation Preview 来同时检查和协调所有动画,甚至还可以冻结特定的动画

Compose Multipreview Annotations

开发者现在可以定义一个包含多个 Preview 的注释类,并使用该新注释一次生成这些预览

使用这个新注释可以同时预览多个设备、字体和主题,再也不需要为每个 composable 重复实现。

Compose Recomposition Counts in Layout Inspector

在调试 Compose 布局时,了解 composables 何时进行或不进行重构,对于了解 App 的 UI 是否正确实现非常重要。

例如,如果它的重组次数过多,那就可能会多浪费额外的资源,同时如果组件没有按照预期进行重组,则可能会导致 UI 异常。

Layout Inspector 现在允许开发者查看布局层次结构中的 composables 何时重新组合或跳过,当用户与应用进行交互时就会显示相关信息,如果要开始使用该功能,请确保应用使用 Compose1.2.0-alpha03 或更高版本。

打开 Layout Inspector 窗口并连接应用进程,在 Component Tree 中会看到布局层次结构旁边出现了两个新列:

  • 第一列显示每个节点的合成数量。
  • 第二列显示每个节点的跳过次数。

当从 Component TreeLayout Display 中选择一个 composable 时,还可以在 Attributes 窗格中看到类似的信息。

如果要重置计数,可以单击 Component Tree 面板顶部附近的 Reset 。重置计数可以帮助了解应用进行特定交互期间的重新组合或跳过次数。

二、Wear

更新了 Wear OS 模拟器配对助手

从 Android Studio Dolphin Canary 3 开始,Wear OS 模拟器配对助手可以更轻松地管理和连接 Wear 模拟器:

  • Device Manager 里查看 Wear devices。
  • 将多个 Wear 设备与单个虚拟或实体手机配对。
  • 启动时自动重新连接以前配对的设备,Android Studio 现在会记住并重新配对上一次设置的配对。

要使用这些新功能,需要手机模拟器 API 级别为 30 或更高,并安装了 Google Play 商店。

此外还需要确保 Wear 模拟器是 API 级别 28 或更高级别,如果要为模拟设备升级到最新的系统映像,请转到 Tools > SDK Manager

有关更多信息,请参阅 使用 Wear OS 模拟器配对助手

更新了 Wear OS 模拟器工具栏

从 Android Studio Dolphin Canary 2 开始,对于 API 级别 28 或更高级别的 Wear 模拟器,工具栏现在会有模拟设备上的物理按钮和常见操作的按钮

新按钮是:1⃣️ 和 2⃣️ 圆点,(按钮 2 仅在 API 级别 30 或更高级别上可用)、Palm 按钮和 Tilt 按钮:

  • 要将设备设置为环境模式,单击 Palm 按钮。
  • 要将设备返回到环境模式之前的最后一个屏幕,单击 Tilt 按钮。

有关详细信息,请参阅 在模拟器中执行常见操作

新的 Wear OS 运行配置

添加了新的运行配置以快速运行和调试特定于 Wear OS 的表面,例如表盘、磁贴和复杂功能,可以在运行应用程序时从 Run/Debug Configurations 对话框创建这些新配置。

有关更多信息,请参阅 Wear OS 运行/调试配置

三、新的 Logcat

Logcat 已更新,可以更轻松地解析、查询和跟踪日志。

New formatter

Logcat 现在会对日志进行格式化,以便开发者可以更轻松地扫描有用信息如标签和消息,并且会识别不同类型的日志,例如警告和错误。

在视图预设之间切换

Logcat 现在允许通在不同的视图模式之间快速切换。

每种视图模式都提供了不同的默认设置,用于显示更多或更少的信息,例如时间戳、标签和进程 ID (PID)。

另外还可以通过选择Modify View 来自定义这些默认视图模式以及自定义视图模式。

新的键值搜索

在以前的 Logcat 版本中,开发者需要选择使用字符串搜索(支持正则表达式)或通过使用 Logcat UI 填充各种字段来创建新过滤器。

第一重方式让搜索变得更加复杂,而第二个选项让共享和设置查询变得更加困难,所以我们现在通过直接从主查询字段引入键值搜索来简化体验

这个新的查询系统提供了开发者想要查询的准确性,并且不依赖于正则表达式,还能够从历史中调用过去的查询,并与其他人共享这些查询,此外,你仍然可以选择使用 RegEx 并根据键值排除日志。

  • 本地应用项目的 PIDpackage:mine

  • 具体数值:

    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • 通过在键前面加上排除特定值

    -tag:<exclude-tag>`
    
  • 通过在键后放置 ~ 来使用具有给定键的正则表达式

    • tag~:<regular-expression-tag>

    • 结合排除标签:-tag~:<exclude-regular-expression-tag>

你还可以通过 查询历史选择(漏斗) 来查询字段,然后从下拉列表中选择它们来查看查询历史记录。

另外,如果要收藏某个查询可以请单击 收藏查询(黄色⭐️) 查询字段末尾的 。

跨应用程序崩溃/重启跟踪日志

新的 Logcat 现在可以更轻松地在应用崩溃和重新启动时跟踪应用的日志,这样开发者就不会错过这些事件中的重要日志。

当 Logcat 注意到应用进程已停止并重新启动时,将在输出中看到一条消息,例如PROCESS ENDED PROCESS STARTED, 如下所示:

而且,重新启动 Logcat 会保留会话配置,例如选项卡拆分、过滤器和查看选项,以便开发者可以轻松地继续之前的会话。

四、其他

Gradle Managed Devices

为了在使用 Android 虚拟设备进行自动化检测测试时提高一致性、性能和可靠性,本次推出了 Gradle 托管设备。

此功能适用于 API 级别 27 及更高级别,允许开发者在项目的 Gradle 文件中配置虚拟测试设备,构建系统在执行自动化测试时使用配置来完全管理(即创建、部署和拆除)这些设备。

这个功能使 Gradle 不仅可以查看正在运行的测试情况,还可以查看设备的生命周期,从而通过以下方式提高测试的体验和质量:

  • 处理与设备相关的问题,以确保执行开发者的测试用例
  • 利用模拟器快照来改善设备启动时间和内存使用率,并在测试之间将设备恢复到干净状态
  • 缓存测试结果并仅重新运行可能提供不同结果的测试
  • 为在本地和远程测试运行之间运行测试提供一致的环境

此外,Gradle Managed Devices 引入了一种名为自动测试设备 (ATD) 的新型仿真器设备,设备经过优化以提高运行仪器测试时的性能。

要了解有关 Gradle 托管设备及其相关功能的更多信息,请参阅 使用 Gradle 托管设备扩展测试

R8 支持使用基于 DEX 指令偏移的映射文件

在优化行信息时,R8 现在可以使用基于指令偏移的行表将信息编码到共享调试信息对象中,这大大减少了线路信息的开销。

此外,如果方法没有行号信息,从 O(API 级别 26)开始的 Android VM 支持在堆栈跟踪中打印指令偏移量,当使用 minSdk 26 或更高版本进行编译并且没有源文件信息时,R8 会完全剥离行号信息。

无状态 lambda 不再被视为单例

构建构建时,无状态 lambda 不再分配为单例,由于添加了字段和类初始化器,之前作为单例的表示增加了代码大小开销,以及由于静态类初始化而导致的启动开销。

无状态 lambda 现在在使用站点上分配的方式与有状态 lambda(带捕获的 lambda)相同

R8 避免了 Android 运行时的验证速度变慢

为了消除 Android 运行时(Dalvik 和 ART)上的性能问题,R8(不是 D8)现在引入了 library stubs 并 outline 了对库类和运行时可能不存在的方法的库方法的调用。

这样做可以消除许多验证问题并提高运行时性能,并且此功能始终启用。

通过 Java 8+ API 脱糖支持 JDK-11 API

使用 coreLibraryDesugaring 依赖项时,现在支持基于 JDK-11 的实现库,有关更多信息,请参阅 desugar_jdk_libs 更改日志

Android Gradle 插件和 Android Studio 兼容性

Android Studio 构建系统基于 Gradle,Android Gradle 插件添加了一些特定于构建 Android 应用程序的功能,下表列出了每个版本的 Android Studio 所需的 Android Gradle 插件版本。