Compose跨平台新版本来了!测试 API 全废弃,iOS 崩溃集中修复

张开发
2026/4/16 2:59:35 15 分钟阅读

分享文章

Compose跨平台新版本来了!测试 API 全废弃,iOS 崩溃集中修复
本次版本带来了全新的 v2 测试 API、一大波 iOS 崩溃修复以及 Desktop 端的内存和性能优化。测试 API 大升级v2 来了这次最大的变化是 UI 测试框架的升级。旧版的runComposeUiTest、runSkikoComposeUiTest、runDesktopComposeUiTest全部标记为 deprecated取而代之的是 v2 版本。核心区别v2 默认使用StandardTestDispatcher替换了之前的UnconfinedTestDispatcher。这意味着什么UnconfinedTestDispatcher会立即执行协程不走调度流程。写测试时确实方便但也容易掩盖真实环境中的时序问题。StandardTestDispatcher更接近生产环境行为测试结果更可靠。另外v2 还支持自定义effectContext对于需要注入特定协程上下文的测试场景非常实用。如果你的项目有跨平台 UI 测试这次升级值得尽早适配。Kotlin/JS 和 Wasm 用户注意从这个版本开始使用 Kotlin/JS 或 Kotlin/Wasm 编译目标必须升级到 Kotlin 2.3.20。不是建议是硬性要求。如果你的项目还停留在旧版本 Kotlin先升级编译器再升级 Compose。顺序不能反。iOS 修了一堆崩溃说实话这次 iOS 的修复清单看得我心情复杂——一方面庆幸问题被解决了另一方面感叹之前的坑确实不少。重点修复包括文本输入相关的崩溃全面清理。启用usingNativeTextInput后空文本框三击崩溃、自动纠错崩溃、键盘建议插入异常——这些让人抓狂的问题这个版本统统修掉了。iOS 15 兼容性修复。之前因为缺少UIWindowSceneGeometry符号会导致崩溃如果你的 App 还需要支持 iOS 15这个修复至关重要。滚动和弹窗修复。Modal 视图中的滚动内容异常、ModalBottomSheetDialog的内容 inset 计算错误都已修正。无障碍访问大幅改善。无障碍元素结构现在更贴近 Android 语义节点运行时元素聚焦问题也已解决。你之前有没有遇到过这些问题桌面端端也没落下桌面端这边有几个值得关注的改动内存泄漏修复。使用非默认compose.layers.type设置时对话框会产生内存泄漏。这种问题往往在生产环境中才会暴露很难排查现在终于堵上了。大量子节点的性能优化。如果你的界面有包含大量子元素的 traversal group比如长列表的无障碍遍历性能会有明显提升。场景关闭时的任务清理。窗口关闭后残留的定时任务不会再继续执行避免了潜在的资源浪费和异常。Compose Hot Reload 也同步升级到了 1.1.0-beta02。Web 端的两个修复Web 目标修了identityHashCode缓存不正确的问题。还有一个跨平台的修复值得一提iOS 上包含 emoji 的文本快速删除不生效的问题也解决了——虽然归在 Web 分类下但实际影响的是 iOS 输入体验。写在最后Compose Multiplatform 的迭代速度越来越快了。从这次更新能看出 JetBrains 的重心iOS 端的稳定性是当前第一优先级。十多个 iOS 修复覆盖了文本输入、无障碍、滚动、弹窗——这些都是生产环境中的高频场景。对于正在用 CMP 做跨平台项目的团队来说beta02 的质量提升是实打实的。建议尽早升级测试。你的项目用上 Compose Multiplatform 了吗iOS 端的体验怎么样评论区聊聊。[#ComposeMultiplatform](javascript: [#Kotlin](javascript: [#跨平台开发](javascript: [#KMP](javascript: [#Android开发](javascript: [#iOS开发](javascript:

更多文章