JetBrains Compose Multiplatform 1.8.0 版本深度解析
前言
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-savedstate
或savedstate
的库需要更新到最新版本 - 这一变化使 Compose Multiplatform 的生命周期管理更加标准化和一致
跨平台功能增强
统一的 BackHandler 实现
1.8.0 版本实现了跨平台的 BackHandler
和 PredictiveBackHandler
:
- 这些功能现在可以在所有支持的平台上使用
- 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:
preloadFont
、preloadImageBitmap
、preloadImageVector
- 支持读取 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 编译器的全面采用,未来版本的性能和功能扩展也值得期待。
- DDeepSeek-V3.1-BaseDeepSeek-V3.1 是一款支持思考模式与非思考模式的混合模型Python00
- QQwen-Image-Edit基于200亿参数Qwen-Image构建,Qwen-Image-Edit实现精准文本渲染与图像编辑,融合语义与外观控制能力Jinja00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~044CommonUtilLibrary
快速开发工具类收集,史上最全的开发工具类,欢迎Follow、Fork、StarJava04GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。06GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!C0300- WWan2.2-S2V-14B【Wan2.2 全新发布|更强画质,更快生成】新一代视频生成模型 Wan2.2,创新采用MoE架构,实现电影级美学与复杂运动控制,支持720P高清文本/图像生成视频,消费级显卡即可流畅运行,性能达业界领先水平Python00
- GGLM-4.5-AirGLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求Jinja00
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手HTML013
热门内容推荐
最新内容推荐
项目优选









