首页
/ JetBrains Compose Multiplatform 1.8.0 版本深度解析

JetBrains Compose Multiplatform 1.8.0 版本深度解析

2025-06-02 23:41:55作者:舒璇辛Bertina

前言

JetBrains Compose Multiplatform 是一个现代化的跨平台 UI 框架,它基于 Google 的 Jetpack Compose 构建,但扩展到了包括桌面、Web 和 iOS 在内的多个平台。这个框架允许开发者使用相同的 Kotlin 代码库为不同平台构建原生用户界面,大大提高了开发效率和代码复用率。

最新发布的 1.8.0 版本带来了许多重要的改进和新特性,特别是在多平台支持、iOS 体验和 Web 交互方面有了显著提升。本文将深入分析这个版本的主要变化和技术亮点。

核心架构升级

全面迁移至 K2 编译器

1.8.0 版本最重大的架构变化是 Compose Multiplatform 代码库已完全迁移到 K2 编译器。这意味着:

  • 原生和 Web 的 klib 现在需要使用 Kotlin 2.1.0 或更高版本才能正常使用
  • 由于编译器插件的底层变更,建议针对新版本重新编译相关库
  • 这一变化为未来的性能优化和功能扩展奠定了基础

开发者需要注意,如果在此迁移过程中遇到任何兼容性问题,应及时向 JetBrains 团队反馈。

多平台生命周期管理重构

生命周期管理模块从内部的核心包迁移到了 androidx SavedState:

  • 使用 lifecycle-viewmodel-savedstatesavedstate 的库需要更新到最新版本
  • 这一变化使 Compose Multiplatform 的生命周期管理更加标准化和一致

跨平台功能增强

统一的 BackHandler 实现

1.8.0 版本实现了跨平台的 BackHandlerPredictiveBackHandler

  • 这些功能现在可以在所有支持的平台上使用
  • Material3 组件和 androidx-navigation 库已经集成了这些功能
  • 为开发者提供了更一致的跨平台后退行为处理方案

剪贴板 API 改进

新版引入了基于协程的 Clipboard 接口:

  • 解决了 Web 平台上剪贴板操作的兼容性问题
  • 废弃了原有的 ClipboardManager,因为它在 Web 平台上无法正确实现
  • 新 API 使用挂起函数,确保了所有平台上的行为一致性

可变字体支持

所有平台现在都支持可变字体(Variable Fonts):

  • 通过 FontVariation.Settings 实现字体样式的动态调整
  • 为设计师和开发者提供了更灵活的排版控制能力
  • 特别适合需要精细控制字体显示效果的应用场景

iOS 平台专项优化

性能提升

1.8.0 版本为 iOS 带来了多项性能改进:

  • 新增实验性标志 useSeparateRenderThreadWhenPossible,可将 GPU 命令编码卸载到单独线程
  • 移除了过时的 Canvas Layers 模式,简化了渲染管线
  • 优化了屏幕阅读器激活时的性能表现

无障碍功能增强

iOS 的无障碍支持得到了显著提升:

  • 增加了对 VoiceOver 的本地化字符串支持
  • 实现了滚动列表的状态播报功能
  • 支持从左到右语言的无障碍手势
  • 添加了对 VoiceControl 的支持
  • 改进了与 UIKit 视图的无障碍一致性

交互体验改进

  • 初始实现了拖放功能支持
  • 改进了与嵌套 UIScrollView 的兼容性
  • 支持通过滑动手势关闭模态 Compose 视图控制器
  • 新增多种触觉反馈类型支持

Web 平台关键改进

文本输入优化

1.8.0 版本显著改善了 Web 平台的文本输入体验:

  • 改进了 Safari 浏览器在移动和桌面端的文本输入支持
  • 修正了特定场景下的文本输入问题
  • 现在能正确处理浏览器的复制/剪切/粘贴事件
  • 在移动浏览器中点击 TextField 时会正确显示虚拟键盘

交互功能增强

  • 实验性添加了 PointerIcon.fromKeyword 函数,用于更改浏览器光标样式
  • 修复了触摸板滚动时按住 Shift 键的水平滚动问题
  • 改进了触摸事件处理,现在能正确处理缩放和旋转手势

桌面平台重要更新

Windows 性能提升

通过将原生代码编译器切换为 Clang,Windows 平台获得了显著性能提升:

  • 软件渲染模式(在某些虚拟机上使用)的平均帧率提高了 6.397 倍
  • 应用程序包体积减小:示例应用安装包从 44.9MB 降至 44.1MB,安装后大小从 107MB 降至 103MB

无障碍功能修复

  • 使用 Modifier.semantics { hideFromAccessibility() } 标记的元素现在能正确隐藏
  • 单选按钮等可选中元素的状态现在能正确报告给无障碍服务
  • 修复了 Swing 互操作模式下的焦点问题

测试框架改进

1.8.0 版本对测试框架做了重要调整:

  • runOnIdle 现在会在 UI 线程上执行操作,与 Android 行为一致
  • runOnIdle 执行操作后不再调用 waitForIdle
  • 主时钟推进不再强制触发重组,除非到达下一帧
  • 空测试的运行开销显著降低

开发者需要注意,依赖 delay 的协程的测试可能需要手动推进测试时间。

资源管理增强

资源库新增了多项功能:

  • 增加了字体和图像资源的预加载 API:preloadFontpreloadImageBitmappreloadImageVector
  • 支持读取 Android 的 autoMirrored 属性并传递给 ImageVector 构建器
  • 修正了字符串资源占位符的正则表达式,能正确匹配多位数占位符

导航库更新

导航功能在多平台支持方面有了显著改进:

  • 基本支持通过深度链接进行导航
  • 实现了非 Android 平台的 navController.handleDeepLink 方法
  • 新增 API 用于配置浏览器导航按钮和地址栏
  • 修复了 iOS 平台上导航栈相关的崩溃问题
  • 修正了根屏幕上错误的"向上导航"行为

兼容性说明

开发者升级到 1.8.0 版本时需要注意以下变化:

  • Gradle 插件现在需要 Kotlin Gradle Plugin 2.0+ 版本
  • Material/Material3 库不再自动包含 material-icons-core,需要显式添加依赖
  • 某些测试行为发生了变化,可能需要调整测试代码
  • iOS 平台移除了几个实验性 API,需要检查是否有代码依赖这些 API

总结

JetBrains Compose Multiplatform 1.8.0 版本是一个重要的里程碑,在多平台一致性、性能优化和功能完整性方面都取得了显著进展。特别是对 iOS 平台的无障碍支持和 Web 平台的交互体验改进,使得这个框架在真正的跨平台开发中更加实用和可靠。

开发者现在可以更自信地使用 Compose Multiplatform 构建高质量的跨平台应用,享受 Kotlin 和声明式 UI 带来的开发效率提升。随着 K2 编译器的全面采用,未来版本的性能和功能扩展也值得期待。

登录后查看全文
热门项目推荐
相关项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
860
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
596
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K