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 时,崩溃报告会包含 IDE 从堆栈轨迹关联到应用之前版本所需的数据。

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

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

Compose 界面检查

为了帮助开发者在 Jetpack Compose 中构建更具自适应性和易用性的界面,Android Studio Iguana Canary 5 在 Compose 预览版中引入了新的界面检查模式。此功能的运作方式与视图的视觉 lint 检查无障碍检查集成类似。当您启用 Compose 界面检查模式时,Android Studio 会自动审核您的 Compose 界面,并检查不同屏幕尺寸下的自适应和无障碍问题,例如大屏设备上的文字被拉伸或颜色对比度较低。此模式会突出显示在不同预览配置中发现的问题,并将其列在“问题”面板中。

立即试用此功能,只需点击 Compose 预览中的界面检查按钮 ,然后发送反馈即可:

点击 Compose 界面检查模式按钮以启用检查。

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

  • 问题面板中已选的问题可能会失去焦点
  • “忽略规则”不起作用
已启用 Compose 界面检查模式,问题面板中显示了详细信息。

Compose 预览的渐进式呈现

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

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

“基准配置文件”模块向导

从 Android Studio Iguana 开始,您可以使用新模块向导(依次点击 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. 在模块级 build 脚本中启用 emulatorControl 选项:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. 在模块级 build 脚本中,将 Espresso Device 库导入到您的项目中:

    Kotlin

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

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.6.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() {
  ...
}