以下是 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 集成,您需要满足以下最低要求:
- 最新的 Canary 版 Android Studio Iguana
- Android Gradle 插件 8.3 的最新 Alpha 版
- Crashlytics SDK v18.3.7(或 Firebase Android 物料清单 v32.0.0)
如需对可调试 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 预览版中引入了新的界面检查模式。此功能的运作方式与视图的视觉 lint 检查和无障碍检查集成类似。当您启用 Compose 界面检查模式时,Android Studio 会自动审核您的 Compose 界面,并检查不同屏幕尺寸下的自适应和无障碍功能问题,例如文本在大屏幕上拉伸或色彩对比度低。此模式会突出显示在不同预览配置中发现的问题,并将其列在“问题”面板中。
立即试用此功能,只需点击 Compose 预览中的界面检查按钮 ,然后发送反馈即可:
UI 检查模式的已知问题:
- 问题面板中已选的问题可能会失去焦点
- “忽略规则”不起作用
适用于 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,请执行以下操作:
如需让测试将命令传递给测试设备,请将
INTERNET
和ACCESS_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
在模块级 build 脚本中启用
emulatorControl
选项:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
在模块级 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 具有多种屏幕方向和可折叠状态,可供您模拟设备配置更改。
针对屏幕旋转进行测试
以下示例展示了如何测试应用在设备屏幕旋转时会发生什么情况:
首先,为了保持一致的启动状态,请将设备设为竖屏模式:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
创建一个测试,在测试执行期间将设备设置为横屏模式:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
屏幕旋转后,检查界面是否按预期适应了新布局:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
针对屏幕展开进行测试
以下示例展示了如何测试当应用在可折叠设备上运行且屏幕展开时会发生什么情况:
首先,通过调用
onDevice().setClosedMode()
在设备处于折叠状态时进行测试。确保应用的布局可适应较小的屏幕宽度:@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
如需转换到完全展开状态,请调用
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() {
...
}