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 类型使用版本控制集成,请启用 vcsInfo 标志。针对发布(不可调试) 则该标志默认处于启用状态

Kotlin

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

Groovy

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

现在,当您构建应用并将其发布到 Google Play 时,崩溃报告会包含 所需的数据让 IDE 从 堆栈轨迹

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

为帮助您分析崩溃的根本原因,您现在可以使用“应用质量” 提供按问题变体或共同事件组查看事件的数据分析 类似的堆栈轨迹如需查看崩溃报告的每个变体中的事件,请从下拉菜单中选择一个变体。若要汇总所有变体的信息,请选择 全部

Compose 界面检查

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

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

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

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

  • 问题面板中已选的问题可能会失去焦点
  • “忽略规则”不起作用
已启用 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 测试应用。浓缩咖啡 利用 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. 为了让测试将命令传递给测试设备,请添加 对 androidTest 源代码集内的清单文件拥有 INTERNETACCESS_NETWORK_STATE 权限:

      <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. 在模块级构建脚本中,导入 Espresso 设备库 复制到您的项目中:

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