Android Studio Flamingo | 2022.2.1 发布,快来看看有什么更新吧

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

新的 Android Studio 版本 Flamingo (火烈鸟) 已经发布,本次更改最有意思的点在于: Flamingo 自带的 JDK 是 JDK 17 而不再是 JDK 11,另外还有如 IDE 支持应用主题图标和动态颜色,更新了 Network Inspector ,更强大的 App Quality Insights ,Live Edit 更新等等。

自带变成 JDK 17 ,大家更新需谨慎

应用主题图标和动态颜色

随着Material 3 中动态颜色和 Android 13 中应用主题图标的引入 ,开发者现在创建的布局或启动图标会经过着色从而继承用户所选壁纸的颜色。

主题应用程序图标预览支持

对于 launcher.xml 文件,现在可以使用工具栏上新的 System UI Mode 来切换墙纸,并支持查看应用图标主题在用户选择不同壁纸之后的效果。

从 Android 13(API 级别 33)开始,用户可以为他们的自适应图标设置主题,如果用户启用了应用主题图标(例如在系统设置中打开主题图标切换),并且 App launcher 进行了支持,系统将使用用户选择的壁纸和主题的颜色来确定 App Icon 的颜色。

动态色彩预览

对于 Compose Preview:新版 Android Studio 向 Composable Preview 注释添加了一个新属性: wallpaper

如果应用中启用了动态颜色,开发者就可以使用这个新属性来切换壁纸,并查看 App 的 UI 对用户选择不同的壁纸后效果。

要使用此功能,必须使用 Compose 1.4.0-alpha03 或更高版本。

动态色彩是使用 M3 配色方案构建,从Android 12开始,用户可以通过壁纸选择等自定义设置生成个性化方案。以 M3 为基础,用户生成的颜色可以与应用颜色共存,将一系列可定制的视觉体验交到用户手中。

对于 Android XML:如果应用中启用了动态颜色,现在也可以使用工具栏上新的 System UI Mode 来切换, 需要注意的是,这里需要先将主题更改为 Material 动态颜色主题,然后再更改壁纸。

Live Edit 更新

live Edit 现在有两种模式:手动和自动:

  • 在手动模式下,每次使用 Ctrl+ S(对于 macOS 为Command+ S)手动保存时都会提交代码更改。
  • 在自动模式下,当更新 composable 函数时,所做的更改会在进行更改时自动提交到设备或模拟器中。

选择要运行 Live Edit 模式,可以从菜单栏(或Mac 上的 Android Studio > Preferences )转到 File> Settings ,点击 Editor > Live Edit,,然后选中 Push Edits Manually 或者 Push Edits Automatically 框。

Compose Tracing

System tracing 支持将设备活动保存到跟踪文件中,然后提供特定时间段内应用系统进程的整体情况。

从 Android Studio Flamingo 开始,开发者可以使用 Compose Tracing 在 System Trace Profiler 中查看 Compose 函数 , Compose Tracing 提供低侵入性的系统跟踪,帮助开发者了解哪些 Compose 函数实际上正在被重构。

要使用 recomposition tracing,需要至少更新到以下版本:

  • Android Studio Flamingo
  • Compose UI: 1.3.0-beta01
  • Compose Compiler: 1.3.0
  • 设备或模拟器至少是 API 级别 30。

此外,需要在 Compose Runtime Tracing 上添加以下依赖项:

implementation("androidx.compose.runtime:runtime-tracing:1.0.0-alpha01")
复制代码

要查看 recomposition tracing, 需要打开 Android Studio Profiler 并选择 CPU profiler,之后打开 App 跳转到要跟踪的 UI,然后选择 System Trace and Record

录制时,可以使用你的 App 让它发生 recomposition,在停止记录和跟踪过程后,可以直接在 Threads timeline 中看到 recomposition trace 中的 Compose 函数。

你还可以在 Analysis 的Flame Chart Top Down Bottom Up 和 Events 选项卡中看到 Compose 函数 。

目前这是一项实验性功能,有关详细信息,可查阅 Compose tracing.。

项目模板更新

Android Studio Flamingo 包含用于创建项目或模块的新模板。

默认情况下,模板使用 Compose Material 3,除非它们被指定为 Views template,建议使用 Compose Material 3 模板(例如Empty Activity)作为创建 Android 应用。

要查看模板,可以通过从主菜单中选择 File > New > New Project 项目,通过 New ProjectCreate New Module 来打开向导。

Network Inspector 流量拦截

从 Android Studio Flamingo 开始 ,Network Inspector 默认显示完整时间线的所有流量数据,开发者可以在时间线中选择一个范围来查看该范围内的流量。

另外还可以创建和管理规则来帮助测试应用在遇到不同响应(例如状态代码、响应标头和正文)时的行为

这些规则确定要拦截哪些响应,以及如何在响应到达应用程序之前修改这些响应,开发者可以通过选中每个规则旁边的 Active 框来选择要启用或禁用的规则,每次修改规则时都会自动保存。

首先,打开到 Network Inspector 中的 Rules 选项卡,然后单击 + 创建新规则,在 Rule Details 面板中命名新规则,并在 Origin 部分下包含有关要拦截的响应来源的信息,Rules 表中的 URL 需要根据开发者对响应来源所做的更改进行更新。

Response 部分,可以在将响应发送到应用之前对其进行修改,例如可以将规则设置为对具有特定状态代码的响应执行并修改该状态代码。

修改 header

Header rules 部分中,可以创建多个子规则来添加或修改响应中的标头。

当创建多个标题规则时,使用规则表顶部的向上和向下箭头来更改标题规则的顺序,该顺序会影响修改后的响应标头,因为标头规则是按照它们列出的顺序应用的。

可以通过点击 Header rules 部分中的 + 添加规则,然后在 Add new header 部分中输入标题的名称和值 。

要修改 header ,可以在 Edit existing header 选项卡里指定要查找的 header 名称或值,输入要替换的header 名称或值。

修改 response

如果有需要,还可以创建子规则来修改 response 的主体。

我们可以选择查找和替换 body 的一部分,或者通过选择 Replace entire body 来替换整个正文的全部内容。

与 Header rules 类似,这里可以创建多个主体规则,这些规则按照它们在表中列出的顺序应用。

布局检查器自动连接 foreground process

布局检查器现在会自动连接到虚拟或物理设备上的应用上,具体来说,就是布局检查器会自动连接到在已连接设备的 foreground process 的可调试进程上。

App Quality Insights 更新

Android Studio Flamingo 引入了多项新的 App Quality Insights 功能,可帮助开发者专注于高优先级问题,并支持团队协作。

新过滤器和过滤器搜索

为了帮助开发者识别出重要的问题,现在可以按以下属性进行过滤,每个过滤器都按事件数排序,因此可以看到大多数事件发生的位置:

  • 安卓平台版本

  • 设备品牌和型号

  • Crashlytics Signal :Signal icons 还会显示在 Issues 面板中相关问题的旁边,因此开发者可以排查计数和信号。如果某个问题在过去已被关闭,但在新版本的应用中再次出现,则该问题被视为已回归。

    image-20230414102040888

  • 应用版本:筛选器现在包括一个更高级别的 Play track 筛选器,可以使用它自动选择生产、开放、封闭和/或内部测试中的版本。

此外,现在可以搜索支持选项过滤器,因此可以更快地自定义视图,而无需滚动浏览所有菜单选项。

直接从 Android Studio 注释和关闭问题

为了更轻松地与队友协作,现在可以直接在 App Quality Insights 工具窗口中执行以下操作:

  • Close issues:要关闭问题,可以点击主堆栈跟踪面板中的 Close 按钮,最近关闭的问题会出现在带有删除线的 issues 面板中。你可以通过再次点击该按钮重新打开最近关闭的问题,但是刷新 App Quality Insights 工具窗口后,已关闭的问题将会消失。
  • 阅读问题并附上注释: 为了在 Firebase 控制台和你的团队成员中可以同时处理问题,如果需要写关于问题的注释,请选择问题并打开 Notes 面板。当然,你必须拥有 Crashlytics 项目的写入权限才能编写注释。

如果你对于 App Quality Insights 还不了解,可以参阅 早期的发布说明

离线时使用有限的功能进行调查

从 Android Studio Flamingo 开始,开发者可以在离线时的 App Quality Insights 工具窗口中执行一些操作。

如果发出的是新请求(例如通过单击Refresh ) ,并且 Android Studio 无法与 Crashlytics 通信,则 App Quality Insights 窗口允许开发者进入 Offline Mode

在此模式下,开发者可以继续调查缓存数据中的问题和最新事件,当然,某些功能(例如更改某些过滤器选项或关闭问题)不可用,要在与 Crashlytics 的连接并返回在线状态,可以点击 Reconnect

一键式自动化可配置构建和运行

Android Studio Flamingo 和 AGP 7.3 引入了一键式自动化可配置构建,这使得配置 profileable app 变得更加容易。

此功能需要 API 级别 29 或更高级别的虚拟或物理测试设备,要使用该功能,请单击 Profile app 程序图标 旁边的箭头,然后在两个选项之间进行选择:

  • 以低开销配置 “app” 启动 CPU 和内存分析器,在内存分析器中,仅启用 记录本机分配。

    image-20230414102913598

  • 具有完整数据的配置文件“应用” 会启动 CPU、内存和能源分析器。

    image-20230414102943728

要了解有的更多信息,可以参阅 Profileable applications

对 SDK 扩展的 Lint 支持

Android Studio Flamingo 为 SDK 扩展提供 lint支持,此功能允许开发者更新 lint 工具的 API 检查,从而支持存在 API backports 和新的 API surfaces(如 Android Privacy Sandbox )的情况下正确实施 API 访问。

通过 SDK 扩展,一个 API 可以存在于多个 SDK 中。例如 Android U 中引入的 API 也可以添加到 Android R、S 和 T 向后移植扩展中。

此外,应用程序可以根据需要使用其清单指定多个 API,并且有新的 API 用于检查各个扩展是否可用,lint 工具现在处理逻辑以检查所需内容和已知内容是否存在重叠。

最后,还有与 API 检查相关的 Studio IDE 功能。此功能现在可以处理新 API surfaces 的 API 违规,执行必要的检查并注册快速修复。

与 JDK 17 捆绑

从 Android Studio Flamingo 开始,Studio IDE 与 JDK 17 捆绑在一起,如果 Android Studio 配置为使用嵌入式 JDK,则新项目将使用最新稳定版本的 Android Gradle 插件和 JDK 17,但是,现有项目可能会有 break,你可能手动将 JDK 设置为兼容版本。

设置 JDK 版本

Android Studio 2.2 及更高版本捆绑提供了最新版本的 OpenJDK,这是我们建议用于 Android 项目的 JDK 版本,如需使用捆绑的 JDK,请执行以下操作:

  1. 在 Android Studio 中打开项目,然后依次选择 File > Settings... > Build, Execution, Deployment > Build Tools > Gradle(在 Mac 上,依次选择 Android Studio > Preferences... > Build, Execution, Deployment > Build Tools > Gradle)。
  2. Gradle JDK 下,选择 Embedded JDK 选项。
  3. 点击 OK

默认情况下,用于编译项目的 Java 语言版本取决于项目的 compileSdkVersion(因为不同版本的 Android 支持不同版本的 Java)。如有必要,你可以通过将以下 CompileOptions {} 代码块添加到 build.gradle文件替换此默认 Java 版本:

android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_6
       targetCompatibility JavaVersion.VERSION_1_6
  }
}
复制代码

猜你喜欢

转载自juejin.im/post/7221717935613395002