Android Studio Iguana | 2023.2.1(2024 年 2 月)

以下是 Android Studio Iguana 中的新功能。

补丁版本

以下是 Android Studio Iguana 和 Android Gradle 插件 8.3 中的补丁版本列表。

Android Studio Iguana | 2023.2.1 补丁 2 和 AGP 8.3.2(2024 年 4 月)

此项次要更新包含这些 bug 修复

Android Studio Iguana | 2023.2.1 补丁 1 和 AGP 8.3.1(2024 年 3 月)

此项次要更新包含这些 bug 修复

IntelliJ IDEA 2023.2 平台更新

Android Studio Iguana 包含 IntelliJ IDEA 2023.2 更新,这些更新改进了 Studio IDE 体验。如需详细了解相关变更,请参阅 IntelliJ IDEA 2023.2 版本说明

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

现在,您可以通过 App Quality Insights 从 Crashlytics 堆栈轨迹导航到崩溃发生的时间点的相关代码。AGP 会将 git 提交哈希数据附加到崩溃报告中,这有助于 Android Studio 导航到您的代码,并显示代码在出现问题的版本中所处的位置。在 App Quality Insights 中查看崩溃报告时,您可以选择转到当前 git 检出中的代码行,或查看当前检出与生成崩溃问题的代码库版本之间的差异。

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

如需对可调试的 build 类型使用版本控制集成,请在模块级 build 文件中启用 vcsInfo 标志。对于发布(不可调试)build,该标志默认处于启用状态。

Kotlin

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

Groovy

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

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

在 App Quality Insights 中查看 Crashlytics 崩溃变体

为帮助您分析崩溃的根本原因,您现在可以使用 App Quality Insights 按问题变体查看事件,或查看具有类似堆栈轨迹的组的事件。如需查看崩溃报告的每个变体中的事件,请从下拉列表中选择一个变体。如需汇总所有变体的信息,请选择全部

Compose 界面检查

为了帮助开发者在 Jetpack Compose 中构建更具自适应性和无障碍性的界面,Android Studio Iguana Canary 5 在 Compose 预览中引入了一个新的界面检查模式。此功能的工作原理类似于针对 View 的视觉 lint 检查无障碍功能检查集成。当您启用 Compose 界面检查模式时,Android Studio 会自动审核您的 Compose 界面,并检查不同屏幕尺寸下的自适应和无障碍功能问题,例如文本在大屏幕上拉伸或色彩对比度低。该模式会突出显示在不同预览配置中发现的问题,并在问题面板中列出这些问题。

如需立即试用此功能,请点击 Compose 预览上的界面检查按钮 ,然后发送您的反馈

点击 Compose 界面检查模式按钮,激活检查。

UI 检查模式的已知问题:

  • 问题面板中的选定问题可能会失去焦点
  • “禁止规则”不起作用
已启用 Compose 界面检查模式,并且问题面板中有详细信息。

适用于 Compose 预览的渐进式渲染

Android Studio Iguana Canary 3 在 Compose 预览中引入了渐进式渲染。我们一直在努力提高预览性能,而现在,对于任何超出视野的预览,我们都会故意降低其渲染质量以节省内存用量。

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

基准配置文件模块向导

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

此模板用于设置您的项目,使其能够支持基准配置文件。它使用新的基准配置文件 Gradle 插件,该插件可自动完成一个 Gradle 任务,以所需的方式设置项目。

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

使用 Espresso Device API 针对配置更改进行测试

在设备经历常见配置更改(例如旋转和屏幕展开)时,使用 Espresso Device API 测试您的应用。借助 Espresso Device API,您可以在虚拟设备上模拟这些配置更改并同步执行测试,因此一次只能发生一项界面操作或断言,测试结果更可靠。详细了解如何使用 Espresso 编写界面测试

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

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

针对 Espresso Device API 设置您的项目

要设置您的项目以支持 Espresso Device API,请执行以下操作:

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

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

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

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

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

    Kotlin

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

    Groovy

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

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

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() {
  ...
}