Android Studio 预览版中的新功能

本页列出了 Android Studio 预览版中引入的新功能。预览版 build 可让您抢先体验 Android Studio 中的最新功能和改进。您可以在此处下载这些预览版。 如果您在使用 Android Studio 预览版时遇到任何问题,请与我们联系。您的 bug 报告有助于我们改进 Android Studio。

如需了解有关 Android Studio 预览版的最新资讯,包括每个预览版中的重要修正的列表,请参阅 Android Studio 博客中的版本更新

Android Studio 的当前版本

下表列出了 Android Studio 的当前版本及其对应的渠道。

版本 频道
Android Studio Hedgehog | 2023.1.1 稳定版
Android Gradle 插件 8.2.2 稳定版
Android Studio Iguana | 2023 年 2 月 1 日 Beta 版
Android Studio Jellyfish | 2023 年 3 月 1 日 Canary 版

与 Android Gradle 插件预览版的兼容性

每个预览版 Android Studio 都会与对应版本的 Android Gradle 插件 (AGP) 一起发布。Studio 的预览版应与任何兼容的稳定版 AGP 搭配使用。不过,如果您使用的是 AGP 预览版,则必须使用对应的 Studio 预览版(例如,Android Studio Chipmunk Canary 7 与 AGP 7.2.0-alpha07)。尝试使用不同版本(例如,将 Android Studio Chipmunk Beta 1 与 AGP 7.2.0-alpha07 搭配使用)将导致同步失败,进而提示更新到相应 AGP 版本。

如需查看有关 Android Gradle 插件 API 废弃和移除的详细日志,请参阅 Android Gradle 插件 API 更新

Android Studio Iguana | 2023 年 2 月 1 日

以下是 Android Studio Iguana 中的新功能。如需了解此版 Android Studio 中已修复的问题,请参阅已解决的问题

Studio Bot 简介

Studio Bot 是您的编码助手,可帮助您进行 Android 开发。它是 Android Studio 中依托 AI 技术的对话体验,可帮助您通过回答 Android 开发查询来提高效率。如需了解详情,请参阅探索 Studio Bot

在安全模式下启动 Android Studio

Android Studio Hedgehog 引入了在安全模式下启动 Android Studio 的功能。如果您遇到某些功能不起作用或整个 IDE 无法启动的情况,此模式可能会很有用,这有时是由自定义配置、环境变量或与 Android Studio 不兼容的插件造成的。

使用安全模式会暂时将 IDE 恢复到一组可能允许其启动的默认配置,以便您从该配置开始进行问题排查,以确定问题并恢复功能。安全模式会尝试通过执行以下操作来打开功能有限的 Android Studio:

  • 停用第三方插件
  • 将捆绑的 Kotlin 插件恢复为最初包含在 Studio 中的版本
  • 暂时重置配置,例如在 studio.vmoptions 文件中重置
  • 验证可能会阻止启动的环境变量,例如 JRE_HOMETMP
  • 根据需要将 JRE 还原为兼容版本

如需在安全模式下启动 Android Studio,请按以下步骤操作:

  1. 找到安全模式脚本。
    • 在 Windows 上,转到 AndroidStudio/bin 并找到 studio_safe.bat 脚本。
    • 在 macOS 上,导航到 Android Studio/Contents/bin 并找到 studio_safe.sh 脚本。
    • 在 Linux 上,转到 android-studio/bin 并找到 studio_safe.sh 脚本。
  2. 运行脚本:打开命令行并输入 studio_safe.bat(对于 macOS 或 Linux 为 studio_safe.sh),然后按 Enter 键。

App Quality Insights 中集成了版本控制系统

借助 App Quality Insights,您现在可以在崩溃发生时从 Crashlytics 堆栈轨迹导航到相关代码。AGP 会将 Git 提交哈希数据附加到崩溃报告,以帮助 Android Studio 找到您的代码并显示相应代码在发生问题的版本中的状态。在 App Quality Insights 中查看崩溃报告时,您可以选择前往当前 Git 检出中的代码行,或查看当前检出与生成崩溃的代码库版本之间的差异。

如需将版本控制系统与 App Quality Insights 集成,您需要满足以下最低要求:

如需使用版本控制集成,请在 gradle.properties 文件中启用 android.enableVcsInfo 标志:

android.enableVcsInfo=true

现在,当您构建应用并发布到 Google Play 时,崩溃报告会包含 IDE 从堆栈轨迹链接到应用的先前版本所需的数据。

Compose 界面检查

为了帮助开发者在 Jetpack Compose 中构建适应性更强且更易于访问的界面,Android Studio Iguana Canary 5 在 Compose 预览版中引入了全新的界面检查模式。此功能与针对视图的视觉 lint 检查无障碍功能检查集成类似。启用 Android Studio 的 Compose 界面检查模式,以自动审核您的 Compose 界面,并检查在不同屏幕尺寸上是否存在自适应和无障碍功能问题,例如文本在大屏幕上拉伸或色彩对比度较低。该模式会突出显示在不同预览配置中发现的问题,并在问题面板中列出它们。

请点击 Compose 预览中的界面检查图标,并发送您的反馈,立即试用此功能:

界面检查模式的已知问题:

  • 在问题面板中选择问题可能会失去焦点
  • “禁止规则”不起作用

Compose 预览的渐进式渲染方式

Android Studio Iguana Canary 3 在 Compose 预览版中引入了渐进式渲染功能。为持续改进预览性能,我们现在对于不在视图范围内的任何预览,我们会特意降低其渲染质量以节省内存用量。

我们开发此功能的目标是在文件中同时处理更多预览,从而进一步提高预览的易用性,请尝试立即试用并提交您的反馈

使用 Espresso Device API 测试配置更改

当设备发生常见配置更改(例如旋转和屏幕展开)时,您可以使用 Espresso Device API 测试应用。借助 Espresso Device API,您可以在虚拟设备上模拟这些配置更改并同步执行测试,因此一次仅发生一项界面操作或断言,并且测试结果更加可靠。如果您刚开始使用 Espresso 编写界面测试,请参阅其文档

如需使用 Espresso Device API,您需要以下各项:

  • 最新的 Canary 版 Android Studio Iguana
  • Android Gradle 插件 8.3 的最新 Alpha 版
  • Android 模拟器 33.1.10 或更高版本
  • 搭载 API 级别 24 或更高级别的 Android 虚拟设备

针对 Espresso Device API 设置项目

如需设置项目以使其支持 Espresso Device API,请执行以下操作:

  • 如需让测试将命令传递给测试设备,请将 INTERNETACCESS_NETWORK_STATE 权限添加到 androidTest 源代码集内的清单文件中:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
      
  • gradle.properties 文件中启用 enableEmulatorControl 实验性标志:

      android.experimental.androidTest.enableEmulatorControl=true
      
  • 在模块级构建脚本中启用 emulatorControl 选项:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      
  • 在模块级构建脚本中,将 Espresso 设备库导入您的项目中:

    Kotlin

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:1.0.0-alpha07")
      }
      

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.0-alpha07'
      }
      

针对常见的配置更改进行测试

Espresso Device API 具有多个屏幕方向和可折叠状态,可用于模拟设备配置更改。

针对屏幕旋转进行测试

以下示例展示了如何测试设备屏幕旋转时应用会发生什么情况:

  1. 首先,为了保持一致的起始状态,请将设备设置为竖屏模式:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
      
  2. 创建一个在测试执行期间将设备设置为横向的测试:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
      
  3. 屏幕旋转后,检查界面是否按预期适应新布局。

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }
      
针对屏幕展开进行测试

以下示例展示了如何测试应用在可折叠设备上且屏幕展开时会发生什么情况:

  1. 首先,通过调用 onDevice().setClosedMode() 对处于折叠状态的设备进行测试。请确保应用的布局能够适应较小的屏幕宽度。

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
      
  2. 如需转换为完全展开状态,请调用 onDevice().setFlatMode()。检查应用的布局能否适应较大尺寸类别。

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }
      

指定测试所需的设备

如果您要在不可折叠的设备上运行执行折叠操作的测试,测试可能会失败。如需仅执行与正在运行的设备相关的测试,请使用 @RequiresDeviceMode 注解。该测试运行程序会在不支持被测配置的设备上自动跳过运行测试。您可以将设备要求规则添加到每个测试或整个测试类中。

例如,如需指定应仅在支持展开为平面配置的设备上运行测试,请将以下 @RequiresDeviceMode 代码添加到测试中:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}

基准配置文件模块向导

从 Android Studio Iguana 开始,您可以使用新模块向导中的 Baseline Profile Generator 模板(File > New > New Module)为应用生成基准配置文件

此模板会设置您的项目,以使其支持基准配置文件。它使用新的基准配置文件 Gradle 插件,该插件可以执行一项 Gradle 任务以所需方式自动执行项目设置流程。

该模板还会创建一个运行配置,您只需从 Select Run/Debug Configuration 下拉列表中点击一下,即可生成基准配置文件。

支持 Gradle 版本目录

Android Studio Giraffe 支持基于 TOML 的 Gradle 版本目录,借助此功能,您可以在一个中心位置管理依赖项,并跨模块或项目共享依赖项。Android Studio 现在可让您通过编辑器建议以及与 Project Structure 对话框集成来更轻松地配置版本目录。如需了解如何更新到 Gradle 版本目录,请参阅将 build 迁移到版本目录

代码补全和导航

当您以 TOML 文件格式修改版本目录或将依赖项从版本目录添加到 build 文件时,Android Studio 会提供代码补全功能。如需使用代码补全功能,请按 Ctrl + 空格键(在 macOS 中,按 Command + 空格键)。此外,只需按 Ctrl+b(在 macOS 上,按 Command+b)即可快速从应用的 build.gradle 文件中的依赖项引用导航到版本目录中声明的位置。

添加依赖项时的代码补全功能

与“Project Structure”对话框集成

如果您的项目使用以 TOML 文件格式定义的版本目录,您可以在 Android Studio 中通过 Project Structure 对话框的 Variables 视图 (File > Project Structure > Variables) 修改已在其中定义的变量。 每个版本目录都有一个下拉列表,其中列出了该目录中的变量。若要修改变量,请点击其值并覆盖它。保存这些更改后,TOML 文件会进行相应的更新。

“Project Structure”对话框中版本目录中的变量

您还可以在 Project Structure 对话框的 Dependencies 视图 (File > Project Structure > Dependencies) 中更新依赖项。如需使用 Project Structure 对话框更新版本,请找到要修改的模块和依赖项,然后更新 Requested Version 字段。保存这些更改后,TOML 文件会进行相应的更新。请注意,如果依赖项版本是使用变量定义的,则直接以这种方式更新版本会将该变量替换为硬编码值。另请注意,无论您是否使用 Project Structure 对话框,从 build 文件中移除某个依赖项并不会从版本目录中移除该依赖项。

“Project Structure”对话框中版本目录中的依赖项

已知问题和限制

以下是 Android Studio 中的 Gradle 版本目录支持的已知问题或限制。

在 Kotlin 脚本文件中突出显示插件别名声明时出错

当您添加 alias(libs.plugins.example) 形式的插件声明时,编辑器会在 libs 部分下方添加一条红色下划线。这是 Gradle 8.0 及更低版本中的已知问题,将在未来的 Gradle 版本中得到解决。

Android Studio 仅支持 TOML 格式的版本目录

目前,Android Studio 代码补全、导航和“Project Structure”对话框支持仅适用于以 TOML 文件格式定义的版本目录。不过,您仍然可以直接在 settings.gradle 文件中添加版本目录,并在项目中使用其依赖项。

对于使用 Kotlin 脚本编写的 build 文件,尚不支持使用 Ctrl + 点击键(在 macOS 上,按 Command + 点击)导航到版本目录中的依赖项定义。

Firebase Assistant 直接在构建脚本中添加依赖项

Firebase Assistant 可将依赖项直接添加到您的构建脚本中,而不是通过版本目录添加。

不支持“查找使用情况”功能

目前尚不支持在其他 build 文件中查找版本目录变量的使用情况,无论 build 文件是在 KTS 中还是 Groovy 中都是如此。也就是说,在版本目录中的变量定义上按住 Ctrl 键(在 macOS 上,按住 Command 键)不会转到使用该变量的 build 文件。

“Project Structure”对话框不显示复合 build 中的目录

Android Studio 中的“Project Structure”对话框会显示多个目录文件(如果这些文件位于根 gradle 文件夹中),但不显示复合 build 的目录。例如,如果您有两个目录文件,一个用于应用,另一个用于复合 build,则“Project Structure”对话框仅显示应用目录文件。您可以使用复合 build,但必须直接修改其 TOML 文件。

Android Studio compileSdk 版本支持

如果您的项目使用的 compileSdk 不受 Android Studio 当前版本支持,Android Studio 会显示警告。此外,我们还建议您改用支持项目所用 compileSdk 的 Android Studio 版本(如果有)。请注意,升级 Android Studio 可能还需要升级 AGP。如果当前版本的 AGP 不支持项目使用的 compileSdk,AGP 还会在 Build 工具窗口中显示警告。

更多 SDK 数据分析:政策问题

对于在 Google Play SDK 索引中违反 Play 政策的公共 SDK,Android Studio 会在 build.gradle.ktsbuild.gradle 文件以及“Project Structure”对话框中显示 lint 警告。您应更新所有违反 Play 政策的依赖项,因为这些违规行为可能会导致您日后无法将应用发布到 Google Play 管理中心。这些违反政策警告是对 Android Studio 显示的过时版本警告的补充。

Android Studio Jellyfish | 2023 年 3 月 1 日

以下是 Android Studio Jellyfish 中的新功能。如需了解此版 Android Studio 中已修复的问题,请参阅已解决的问题

在 Android Studio 中使用设备串流功能访问真实设备

借助 Android Studio 中的设备串流功能,您可以安全地连接到 Google 安全数据中心内托管的远程实体 Android 设备。它由 Firebase 提供支持,可让您针对真实设备(包括 Google Pixel 8 Pro、Pixel Fold,部分三星设备等)测试应用的最快速、最简单的方法。

在 Android Studio 中使用设备串流功能的动画。

连接到设备后,您可以部署应用、查看显示屏、与设备互动(包括旋转或展开设备),以及通过 SSL 连接通过直接 adb 对设备执行的任何其他操作,所有这些操作都无需离开 Android Studio。当您使用完设备后,Google 会擦除您的所有数据并将设备恢复出厂设置,然后再将其提供给其他开发者使用。

在当前的公开 Alpha 版中,您可以采用 Spark 或 Blaze 方案在 Firebase 项目中免费使用设备流式传输功能。首先,请从 Android Studio 登录您的开发者帐号,并选择一个 Firebase 项目。如果您还没有 Firebase 项目,也可以轻松创建一个。如需了解详情,请参阅 Android Studio 中的设备串流

新登录流程

使用开发者帐号登录 Android Studio 后,您可以直接从 IDE 中受益于各种 Google 开发者服务,例如在 App Quality Insights 中查看 Firebase Crashlytics 和 Android Vitals 报告、通过 Android Studio 中的设备串流功能访问真实的远程设备,以及使用 Studio Bot 编写更优质的代码。

Android Studio Jellyfish 可让您更轻松地添加和管理帐号,并且仅为 IDE 提供每项功能所需的权限。首先,请执行以下操作之一:

  • 转到上述某项功能,然后按照提示登录并提供必要的权限。
  • 如果您已登录,可以导航到设置/偏好设置 > 工具 > Google 帐号来管理您的帐号和权限。

Compose UI Check 中新增了色盲检查

Compose UI 检查包含新的色盲模拟和检查功能,可让您为所有用户打造视觉无障碍体验。只需从 Compose 预览进入界面检查模式,即可查看存在不同类型的色觉缺陷的 Compose 界面,从而确保您的设计清晰易用。

Compose 界面检查色盲示例

使用 Gemini API 模板构建生成式 AI 应用

您现在可以使用 Android Studio 构建通过 Google AI SDK 实现生成式 AI 的应用。借助 Android Studio 中的 Gemini API 模板,您可以将 AI 赋能的功能(例如那些依赖于文本生成和图像识别的功能)集成到您的应用中,为用户提供愉悦的体验。

如需了解如何开始使用,请参阅在 Android Studio 中构建首个生成式 AI 应用

Android Gradle 插件行为变更

从 Android Gradle 插件 8.4.0-alpha04 开始,如果 Android 库项目缩减了大小,那么系统会发布缩减的程序类,以便在项目间发布。这意味着,如果应用依赖于 Android 库子项目的缩减版本,则 APK 将包含缩减的 Android 库类。如果 APK 中缺少类,您可能需要调整库保留规则

如果您正在构建和发布 AAR,您的库所依赖的本地 JAR 文件将原封不动地包含在 AAR 中,这意味着代码缩减器不会在这些 JAR 上运行。

如需还原为之前的行为,请在 gradle.properties 中设置 android.disableMinifyLocalDependenciesForLibraries提交 bug。未来的 AGP 版本将移除此标志。

使用设备镜像重定向音频

从 Android Studio Jellyfish Canary 5 开始,您可以将音频从已连接的实体设备重定向到计算机扬声器或头戴式耳机。使用音频重定向功能时,请将耳机始终连接到计算机,并同时收听计算机和连接的手机,而无需手动重新连接到一台设备。如需启用音频重定向功能,请依次前往 Android Studio > Settings > Tools > Device Mirroring,然后选择 Redirect audio from local devices。请注意,对于搭载 Android 12 或更高版本的 Firebase Test Lab 设备,无论何种设置,音频始终会被重定向。

Lint 行为变更

从 Android Gradle 插件 8.3.0-alpha02 开始,在模块上运行 lint 时,系统会针对该模块的主要组件和测试组件运行单独的 lint 分析任务。我们进行这项更改是为了提高性能。 如需还原到之前的行为,请在 gradle.properties 文件中设置 android.experimental.lint.analysisPerComponent=false