首页
/ JetBrains Compose Multiplatform v1.8.0-alpha04 技术解析

JetBrains Compose Multiplatform v1.8.0-alpha04 技术解析

2025-06-02 06:36:18作者:袁立春Spencer

JetBrains Compose Multiplatform 是一个现代化的跨平台 UI 框架,它基于 Kotlin 语言,允许开发者使用声明式语法构建原生用户界面。该框架支持 Android、iOS、桌面(Windows/macOS/Linux)和 Web 等多个平台,实现了"一次编写,多平台运行"的开发理念。

性能优化

本次预发布版本在 Windows 平台上实现了显著的性能提升。通过将原生代码编译器从原有方案替换为 Clang,带来了以下改进:

  • DirectX 渲染性能提升 17%
  • 软件渲染性能提升高达 73%
  • 二进制文件体积显著减小:x64 架构从 16.7MB 降至 12.1MB,arm64 架构从 17.4MB 降至 10.5MB

这些优化使得 Windows 平台上的应用运行更加流畅,同时减少了应用包体积,对用户体验和分发效率都有积极影响。

iOS 平台增强

iOS 平台在本版本中获得了多项重要功能增强:

  1. 触觉反馈支持:新增了多种触觉反馈类型,使应用能够提供更丰富的触觉交互体验。

  2. 键盘辅助功能:当 iOS 设备启用"全键盘访问"功能时,现在能够正确支持可聚焦节点的导航。

  3. 文本输入改进

    • BasicTextField(TextFieldState) 添加了浮动光标支持
    • 支持辅助功能文本输入
    • 为 UI 测试添加了文本输入支持
  4. 无障碍功能增强

    • 支持"粗体文本"辅助功能设置
    • 支持"减少动画"辅助功能设置
    • 增加了博杰普尔语(Bhojpuri)的 VoiceOver 支持
    • 改进了滚动容器内节点的遍历能力
  5. 导航动画:默认的 androidx.navigation 过渡动画现在更接近 iOS 原生的返回手势效果。

问题修复

跨平台问题

  • 修复了 TextField(TextFieldState) 在使用输入法(如中文输入)时,转换输出错误地影响未转换文本的问题
  • 解决了 GraphicsLayer.record 过程中可能出现的"Object already closed"异常
  • 修复了内部布局节点在某些情况下重复使用导致的内存泄漏问题
  • 正确设置了 TextField(TextFieldState)ScrollState.viewportSize

iOS 特定问题

  • 修复了横向和纵向滚动可能相互拦截和取消的问题
  • 解决了触摸事件可能同时被返回手势和可组合内容处理的问题

桌面平台

  • 恢复了与 Ubuntu 20.04 的兼容性
  • 修复了非 Gradle 项目中可能出现的"Could not resolve version conflict"问题

Web 平台

  • 在移动浏览器中,点击/聚焦 TextField 时现在会正确显示虚拟键盘
  • 修复了使用鼠标在 TextField 中选择文本的问题

导航组件

  • 修复了桌面平台按 Esc 键时的后退导航问题
  • 修复了 iOS 平台在不允许的边缘滑动后的后退导航问题

重要变更

  1. 依赖管理:现在需要确保项目中包含 Google Maven 仓库,因为 Compose Multiplatform 开始依赖其中的部分工件。

  2. 生命周期管理:多平台生命周期已从内部 core-bundle 模块迁移到 androidx SavedState。使用相关库的项目需要更新到最新版本。

  3. Material3 版本调整:由于 Jetpack Compose Material3 1.4.0 稳定版发布时间晚于 Compose Multiplatform 1.8.0,Material3 版本暂时回退到 1.3.1。开发者如需使用新 API,可以显式指定依赖版本。

  4. 运行时模块变更:Compose 运行时模块现在公开暴露其对 Kotlin 协程 API 的依赖关系(从 implementation() 改为 api())。

总结

JetBrains Compose Multiplatform v1.8.0-alpha04 带来了显著的性能改进和功能增强,特别是在 iOS 平台的无障碍功能和交互体验方面。同时修复了多个关键问题,提升了框架的稳定性和可靠性。开发者需要注意一些重要的依赖管理和 API 变更,以确保项目能够顺利升级。

这个版本继续推动着 Compose Multiplatform 向更成熟、更强大的跨平台 UI 解决方案迈进,为开发者提供了更多工具和能力来构建高质量的多平台应用。

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

项目优选

收起
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
51
14
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
289
813
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
483
387
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
110
194
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
58
139
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
364
37
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
59
7
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
973
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
96
250
CangjieMagicCangjieMagic
基于仓颉编程语言构建的 LLM Agent 开发框架,其主要特点包括:Agent DSL、支持 MCP 协议,支持模块化调用,支持任务智能规划。
Cangjie
577
41