Compose Multiplatform 版本演进深度解析:从 1.0 到 1.12 的 CHANGELOG 全解读
2026/9/13 1:51:14 网站建设 项目流程

Compose Multiplatform 版本演进深度解析:从 1.0 到 1.12 的 CHANGELOG 全解读

【免费下载链接】compose-multiplatformCompose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.项目地址: https://gitcode.com/GitHub_Trending/co/compose-multiplatform

本文以 Compose Multiplatform 官方仓库根目录下的 CHANGELOG.md 为骨架,系统梳理该框架从 2021 年首个版本到 2026 年最新预发布版本的全部演进脉络。读者将掌握:CHANGELOG 的板块结构与阅读方法、五个大版本的发布节奏与核心亮点、iOS / Desktop / Web / Resources / Navigation 各平台专项改进、历次 Breaking Changes 与迁移清单,以及 Gradle 插件与各库坐标的版本矩阵,从而在升级 Compose Multiplatform 时做出准确判断。

一、如何阅读这份 CHANGELOG:文档结构说明

Compose Multiplatform 的 CHANGELOG.md 是一份按版本倒序排列的变更记录,最新版本位于文件顶部。每个版本条目遵循高度统一的模板:

  • 版本标题与时间戳:如# 1.12.0-beta03 (July 2026),同时标注_Changes since <上一版本>_,指明与哪个基线版本的差异;
  • Highlights:仅出现在重大稳定版本(如 1.8.0、1.9.0、1.10.0)中,汇总该版本最具代表性的能力;
  • Breaking Changes:不兼容的 API 改动,升级前必须处理;
  • Migration Notes:推荐迁移路径与替代 API;
  • Features / Fixes:按平台维度分节(Multiple Platforms、iOS、Desktop、Web、Resources、Navigation、Gradle Plugin、HTML 等);
  • Known Issues:已知问题登记(如 1.11.0-alpha02 中 macOSSwingPanel渲染问题);
  • Components:末尾固定给出 Gradle 插件版本号org.jetbrains.compose与各库坐标表。

这种“先看 Highlights → 再查 Breaking Changes → 最后核对 Components 版本矩阵”的阅读顺序,可以最高效地评估一次升级的影响面。

仓库 README.md 的 “Learn more” 一节将 Changelog 与 FAQ、Tutorials、CONTRIBUTING.md 并列,说明它是官方维护、与代码同步更新的权威文档;而 VERSIONING.md 已整体迁移至外部文档站点,仓库内仅保留跳转说明,因此版本兼容性细则以 CHANGELOG 中各版本的 Migration Notes 为准。

二、版本发布节奏与完整时间线

从 CHANGELOG 末尾的 M1(2020 年 11 月,Initial release)开始,Compose Multiplatform 保持了稳定的迭代节奏。主要稳定版本时间线如下:

版本发布时间定位
1.0.0-alpha2021 年 8 月首个统一版本,Desktop、Web、Android 同版本同批次发布
1.0.0-beta2021 年 10 月不再发布 Android 产物,改为引用 Google 官方发布的 artifact
1.0.02021 年 12 月首个稳定版,Desktop 全面完善
1.1.02022 年 2 月Desktop 功能扩展
1.2.02022 年 10 月持续稳定化
1.3.02023 年 1 月版本收敛
1.4.02023 年 4 月iOS 支持进入稳定轨道
1.5.02023 年 8 月多平台能力扩充
1.6.02024 年 2 月iOS 稳定版里程碑
1.7.02024 年 10 月重要稳定版
1.8.02025 年 5 月全面迁移 K2、Windows 性能大幅提升
1.9.02025 年 9 月Web 目标进入 Beta、ComposeViewport 成为 Web 入口
1.10.02026 年 1 月Preview 注解进入 commonMain、Hot Reload 捆绑进插件
1.11.02026 年 5 月Shader 类型封装、原生 iOS 文本输入、Navigation3 基础支持
1.12.0-beta032026 年 7 月当前最新预发布版

此外还有大量中间维护版本与预发布版本:如 1.9.1 ~ 1.9.3、1.10.1 ~ 1.10.3、1.11.1,以及每个大版本前的 alpha/beta/rc 系列(例如 1.11.0-alpha01 ~ alpha04、1.11.0-beta01 ~ beta03、1.11.0-rc01)。值得注意的细节是:预发布周期内 Fixes 常常标注_(prerelease fix)_前缀,表示该修复仅存在于预发布线(如 Hot Reload 版本升级、1.12 线中多次修复usingNativeTextInput崩溃),正式版用户需等待对应稳定版本发布。另外,个别版本(如 1.10.2)明确标注 “No Compose Multiplatform specific changes”,说明其仅同步上游 Jetpack Compose 库版本。

三、各主要版本核心亮点纵览

1.0 时代:三端同版本发布与 Desktop 基础能力落地

  • 1.0.0-alpha(2021 年 8 月):Desktop、Web、Android 三端以同一版本号同时发布;Desktop 端引入新 Window API(不再标记实验性)、painterResource统一图像加载、Tab 键在文本字段间导航、@Preview 注解支持、Linux ARM64 支持、无边框窗口缩放支持等。
  • 1.0.0-beta(2021 年 10 月)不再发布 Android 产物,改为直接引用 Google 官方 Jetpack 产物,从根源上消除兼容性问题;Desktop 端新增 macOS 无障碍支持、智能渲染回退逻辑、透明窗口、clickable/toggleable悬停指示;DesktopMaterialTheme废弃,统一使用MaterialTheme
  • 1.0.0(2021 年 12 月):Material3 实验性支持、所有 clickable 组件可获得焦点并响应 Enter 键、默认不再响应右键、错误对话框、Esc 关闭菜单类组件、应用销毁时默认调用exitProcess;Web 端compose.web.widgets废弃。

1.6.0(2024 年 2 月):iOS 稳定化

1.6.0 是 iOS 支持从实验走向稳定的关键版本。CHANGELOG 记录了大量 iOS 专项修复与能力,包括文本输入、弹出层行为、无障碍(VoiceOver 焦点管理、isTraversalNode语义)、以及ComposeUIViewController的稳定性改善。同时包含 Web 端CanvasBasedWindow的演进和资源系统的完善。该版本为后续 1.7.0 的全面稳定奠定了基础。

1.8.0(2025 年 5 月):K2 迁移与 Windows 性能跃升

1.8.0 的 Highlights 具有里程碑意义:

  • 代码库全面迁移到 K2 编译器:native 与 web klib 仅支持 Kotlin 2.1.0 及以上版本消费,官方建议重新编译依赖库;
  • 多平台BackHandler/PredictiveBackHandler落地,并集成进 material3 组件与 androidx-navigation;
  • Windows 性能显著提升:原生代码编译器更换为 Clang,软件渲染 FPS 平均提升 6.397 倍(针对 VM 场景),安装包体积从 44.9 MB 降至 44.1 MB、安装后体积从 107 MB 降至 103 MB;
  • 默认 ProGuard 版本设为 7.7.0,若 Release 构建出现新错误,可通过增加-keep class规则规避;
  • 其他亮点:FontVariation.Settings变体字体支持、可配置的LineHeightStyle.Alignment垂直居中、全新 suspend 版Clipboard接口(ClipboardManager因无法在 Web 正确实现而被废弃)、Skia 更新至 m132。

1.9.0(2025 年 9 月):Web Beta 与 ComposeViewport

1.9.0 的 Web 目标是绝对主角:

  • WebElementView用于在 Web 目标中嵌入绝对定位的 HTML 内容,仅支持ComposeViewport入口,不支持已废弃的CanvasBasedWindow
  • Web 文本上下文菜单(移动端 + 桌面端双模式)与基础无障碍支持落地;
  • CanvasBasedWindow废弃,统一迁移到ComposeViewport:后者传入parentContainer(默认document.body)并自动创建 Canvas,而前者要求手写 HTMLCanvasElement id;
  • 新增composeCompatibilityBrowserDistribution任务,可合并 JS 与 WASM 两套产物,浏览器不支持新特性时自动切换 JS 模式;
  • Desktop 端:Window/DialogWindow重命名为SwingWindow/SwingDialog;新增SwingFrame/SwingDialog可组合项;ComposePanel/ComposeWindow/ComposeDialog新增实验性状态保存恢复能力;废弃实验性Modifier.mouseClickable
  • Kotlin 版本要求全面提升:所有平台(含 JVM)要求 Kotlin 2.1+;Compose Gradle 插件要求 Kotlin Gradle Plugin 2.+;
  • Material3 与主版本解耦(详见第五节)。

1.10.0(2026 年 1 月):Preview 注解统一与 Hot Reload 内置

  • androidx.compose.ui.tooling.preview.Preview注解在 commonMain 可用,同时废弃org.jetbrains.compose.ui.tooling.preview.Preview与 Desktop 对应注解,统一 Preview 注解家族——这与仓库 components/ui-tooling-preview 模块的定位一致(该模块的 library 同时提供 commonMain / androidMain / nonAndroidMain 源码集);
  • Compose Hot Reload Gradle 插件随 Compose 插件捆绑,Kotlin 2.1.20+ 无需单独配置即可启用(对应仓库 components 等独立组件仍各自维护版本);
  • Navigation3 获得基础支持,并发布adaptive-navigation3适配库;
  • LocalLifecycleOwner默认在runComposeUiTest中提供;
  • Desktop:DialogWindow()新增modalityType参数;实验性-Dskiko.gpu.resourceCacheLimit属性(默认 256M)限制 GPU 资源缓存;SwingPanel不再要求手动设定固定尺寸;
  • 迁移要点:Popup/DialogProperties中 pre-1.7 的隐藏构造参数正式移除;usePlatformInsetsuseSoftwareKeyboardInsetscrimColor等移除实验注解;Gradle 插件中的依赖别名(如compose.ui)废弃,改为直接使用 artifact 坐标并加入版本目录(version catalog)。

1.11.0(2026 年 5 月):图形 API 解耦与原生 iOS 文本输入

1.11.0 是本仓库当前“最新稳定大版本”之后的最大一次能力跃迁:

  • Breaking:Shader成为独立 Compose 包装类型,与 Skia/Skiko 直接类型解耦——向 Compose API 传入原生 shader 需用SkShader.asComposeShader()包装,取回则用Shader.skiaShader扩展;NativePaint/NativeCanvastypealias 废弃级别升至 ERROR,Paint.asFrameworkPaint()RenderEffect.asSkiaImageFilter()Canvas.nativeCanvas分别被skiaPaint/skiaImageFilter/skiaCanvas替代;
  • iOS:Native iOS Text Input 新模式PlatformImeOptions.usingNativeTextInput(enabled)):原生光标放置与移动、原生放大镜、原生选择手势(双击选词/三击选段)、原生上下文菜单(含 Translate、Look Up、Share 等系统动作)、自动纠错与自动填充支持;
  • iOS 新增ComposeUIViewAPI 支持在视图层级中嵌入 Compose;parallelRendering默认开启;不再支持 Apple x86_64 目标(跟随 Kotlin 侧废弃);Apple 平台要求 Kotlin 2.3;
  • Web:WebElementView正式更名HtmlElementView(在webMain源码集可用);Kotlin/Wasm 要求 Kotlin 2.3.20;
  • 其他迁移:项目语言/API 版本迁移至 Kotlin 2.2;Key.Home废弃改用Key.MoveHomenavigation-runtime/navigation-common不再传递androidx.collection依赖,需显式声明;v1 版 UI 测试函数(runComposeUiTest等)废弃,迁移至 v2(默认StandardTestDispatcher,可自定义effectContext);点击非焦点节点外区域默认清除焦点(isClearFocusOnMouseDownEnabled可关闭);Dialog新增进出场动画(可用DialogProperties.animateTransitionComposeUiFlags.isDialogAnimationEnabled关闭);Skia 更新至 m144。

1.12.0 预发布线(2026 年 6–7 月):前沿特性预览

1.12.0-alpha01 至 beta03 记录了正在打磨中的能力:

  • LayerOutsets支持GraphicsLayerModifier.graphicsLayer,可扩大图层可视边界以规避离屏缓冲的隐式clipToBoundsMeshGradientPainter支持Modifier.paint
  • iOS 无障碍新增VerbatimTtsAnnotationLocaleListLiveRegion语义支持;NSLocale.toComposeLocale()转换 API;
  • Desktop:ComposePanel/ComposeWindow/ComposeDialog支持用UNSPECIFIED_DIMENSION_VALUE声明由内容决定的最小/首选/最大尺寸;默认 ProGuard 升级至 7.8.0;实验性WindowStateAPI;LocalAwtWindow.current提供父 AWT 窗口;
  • Web:Modifier.keepScreenOn基于 Screen Wake Lock API;触觉反馈支持;div#cmp_a11y_root尺寸修复使 Compose 内容可被 Appium 等命中测试型无障碍工具识别;移动浏览器软键盘修复;
  • Resources:支持 BCP 47 脚本限定符(如values-b+sr+Latnvalues-b+zh+Hans)与数字区域限定符(values-b+es+419);
  • 兼容性:Gradle 插件新增 runtime 库与 skiko 库的一致性校验,从构建期拦截版本错配。

四、按平台解读的长期改进主线

iOS 平台

iOS 是 CHANGELOG 中条目最多的平台,改进主线包括:

  1. 文本输入与 IME:从 1.8 的BasicTextField(TextFieldState)浮动光标、原生双击/长按行为、放大镜,到 1.9 的PlatformImeOptions原生 IME 配置、键盘帧率投票,再到 1.11 的 Native iOS Text Input 模式;
  2. 无障碍(Accessibility / VoiceOver):1.8 支持 VoiceOver 状态播报、Voice Control、Bold Text / Reduce Motion 系统设置、文本输入与 UI 测试文本输入;1.9 支持 LiveRegion、Full Keyboard Access 滚动命令;1.10 增加WindowInsetsRulers、Full Keyboard Access 自动滚动;1.11/1.12 持续对齐 Android 语义节点结构;
  3. 互操作ComposeUIViewController嵌入 SwiftUI/UIKit 的持续修复(1.10 修复 SwiftUI Form 中放置 Compose、UIKit 视图进入 Popup/Dialog;1.11 新增ComposeUIView);
  4. 渲染与性能parallelRendering从实验走向默认开启;useSeparateRenderThreadWhenPossible渲染线程分离;Metal 渲染器崩溃修复;
  5. 系统集成:tvOS Siri Remote 按键事件(1.11)、iPad 交通灯重叠修复(iOS 26 LayoutRegion)、ViewModel.onCleared在容器释放时调用。

Desktop 平台

Desktop 的长期主线是窗口体系与 Swing 互操作:

  • 窗口体系singleWindowApplication的 receiver 继承ApplicationScope(可编程退出应用,1.11);WindowState实验性 API(1.12);SwingFrame/SwingDialog(1.9);状态保存恢复(1.9);
  • ComposePanel 尺寸语义:1.10 修复getPreferredSize返回 0×0 而非 null;SwingPanel按内容 min/pref/max 尺寸自适应;1.12 引入UNSPECIFIED_DIMENSION_VALUE精细控制;
  • 输入与快捷键:数字小键盘键位修正(Key.NumPadDotVK_DECIMAL)、numpad 方向键支持、Windows 上Alt-backspace撤销、修饰键精确匹配(修复 Windows 输入 'ą'/'ż' 变音符号)、Ctrl/Cmd+Home/End文本导航;
  • 无障碍:AWTAccessibleRole直接声明(awtRole)、Windows NVDA 遍历、macOS VoiceOver 修复、TextField.contentDescription作为可访问名称;
  • 渲染与分发:ProGuard 版本从 7.7.0 → 7.8.0;~/.skiko缓存清理(skiko.data.cleanup.days配置保留天数);compose.swing.redispatchMouseWheelEvents系统属性控制滚轮事件重派发;glibc 2.27 发行版支持。

Web 平台

Web 的目标演进从实验走向 Beta:

  • 入口点CanvasBasedWindow→ 废弃 → 删除(1.11 正式删除),ComposeViewport成为唯一推荐入口;
  • 交互:统一 touch 与 pointer 事件处理、Magic Mouse 行为修复、精确触控板手势检测(Chrome 启发式)、滚轮双轴滚动(修复斜向滚动)、Safari 打字延迟缓解、iOS Safari 软键盘行为修复;
  • 无障碍与 A11y:基础无障碍支持(1.9)、a11y 容器尺寸修复(1.12);
  • 字体与文本:未知符号自动加载 Noto 字体、网络错误时回退字体重试、复合文本输入(composite input)修复;
  • 工程化composeCompatibilityBrowserDistribution双产物分发、skiko.js 不再需要手动引入、Web Cache API 缓存全部资源。

Resources 与 Navigation

  • Resources:BCP 47 多段区域限定符支持(1.12);Web Cache API、JvmResourceReader 自定义 classloader(1.9);setResourceReaderAndroidContext(1.10);Robolectric 测试环境资源访问修复(1.10);macOS 原生目标资源打包修复(1.10);Web 资源获取失败不再崩溃(1.12);
  • Navigation / Navigation3:1.10 提供NavigationEventDispatcherOwner支撑 Navigation3;1.11 Navigation3 支持unveilIn/veilOutiOS 过渡动画、默认过渡动画 iOS 贴合系统返回手势、Web/Desktop 默认事务设为 None;1.9 提供NavController.bindToBrowserNavigation绑定浏览器导航状态;非 Android 目标在对话框打开时忽略返回手势(1.10)。

Gradle 插件

  • 插件版本随每个发布版本同步(如 1.12.0-beta03 对应org.jetbrains.compose1.12.0-beta03);
  • 1.9 起要求 Kotlin Gradle Plugin 2.+,移除旧版org.jetbrains.compose.compiler配置 API;
  • 1.11 起新增 runtime 库与 skiko 库一致性校验,构建期提前拦截版本错配;
  • 1.10 起依赖别名(compose.ui等)废弃,改用直接坐标并纳入 version catalog——仓库内各示例项目(如 examples/imageviewer、examples/issues)的libs.versions.toml均采用这一实践。

五、组件版本矩阵:插件与各库坐标详解

每个版本条目末尾的 Libraries 表格是该 CHANGELOG 最具操作价值的部分,它给出了「Compose Multiplatform 库坐标 → 基于哪个 Jetpack 版本」的精确映射。以当前最新的 1.12.0-beta03 为例,完整矩阵如下:

库分组Maven 坐标基于的 Jetpack 版本
Runtimeorg.jetbrains.compose.runtime:runtime*:1.12.0-beta03Compose Runtime 1.12.0-beta02
UIorg.jetbrains.compose.ui:ui*:1.12.0-beta03Compose UI 1.12.0-beta02
Foundationorg.jetbrains.compose.foundation:foundation*:1.12.0-beta03Compose Foundation 1.12.0-beta02
Materialorg.jetbrains.compose.material:material*:1.12.0-beta03Compose Material 1.12.0-beta02
Material3org.jetbrains.compose.material3:material3*:1.12.0-alpha03Material3 1.5.0-alpha22
Material3 Adaptiveorg.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-beta02Material3 Adaptive 1.3.0-beta02
Lifecycleorg.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0Jetpack Lifecycle 2.11.0
Navigationorg.jetbrains.androidx.navigation:navigation-*:2.10.0-alpha02Jetpack Navigation 2.10.0-alpha05
Navigation3org.jetbrains.androidx.navigation3:navigation3-*:1.2.0-alpha02Navigation3 1.2.0-alpha04
Navigation Eventorg.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0Navigation Event 1.1.1
Savedstateorg.jetbrains.androidx.savedstate:savedstate*:1.4.0Jetpack Savedstate 1.4.0
WindowManager Coreorg.jetbrains.androidx.window:window-core:1.5.1Jetpack WindowManager 1.5.1

解读这份矩阵需要注意三点:

  1. Material3 版本解耦:自 1.9.0 起,由于上游 Jetpack Material3 尚未稳定发布 1.4,Material3 与 Compose Multiplatform 主版本解耦。1.9.0 中compose.material3别名指向稳定的 Material3 1.8.2,而需要最新特性时需显式声明implementation("org.jetbrains.compose.material3:material3:1.9.0-beta06")。此后每个版本(1.10/1.11/1.12)的 Material3 都保持独立 alpha 版本号(如 1.12.0-alpha03);
  2. 版本一致性:主版本内(如 1.11.0、1.11.1)Runtime/UI/Foundation/Material 四库版本号与插件版本号严格一致;预发布线(alpha/beta/rc)亦保持同号;
  3. 依赖收敛:1.11 起navigation-runtime/navigation-common不再把androidx.collection作为api传递依赖,若项目编译报 unresolved 类,需自行添加implementation("androidx.collection:collection:1.5.0")

升级时建议以目标版本的 Components 表格为准统一锁定全部坐标,避免混用不同大版本的库产物;Gradle 插件 1.11+ 内置的兼容性校验也会在构建期提示此类不一致。

六、升级实操:迁移清单与避坑指南

综合全部版本条目,可将升级检查浓缩为以下清单:

  1. 核对 Kotlin 版本下限:这是最容易踩的坑。1.8 要求 Kotlin 2.1(native/web 消费方);1.9 全面要求 Kotlin 2.1+ 且插件要求 KGP 2.+;1.10 要求 native/web 用 Kotlin 2.2;1.11 项目语言/API 版本迁移到 Kotlin 2.2、Apple 平台与 native/web 要求 Kotlin 2.3、Wasm 要求 2.3.20;
  2. 确认平台目标兼容性:1.11 起 Apple 不再支持 x86_64 目标,需检查 CI 与分发机器的架构;
  3. 处理 API 重命名与废弃WindowSwingWindowDialogWindowSwingDialog(1.9);WebElementViewHtmlElementView(1.11);Key.HomeKey.MoveHome(1.11);runComposeUiTest系列 → v2 版本(1.11);Shader/NativeCanvas/NativePaint/Paint.asFrameworkPaint等图形 API 迁移(1.11);
  4. 检查依赖声明方式:Gradle 插件依赖别名废弃(1.10),改为直接坐标;material-icons-core不再被 material 库传递依赖(1.8),需要时显式声明;androidx.collection需显式声明(1.11);
  5. 关注行为变化:点击外部清除焦点默认开启(1.11 起isClearFocusOnMouseDownEnabled默认 false);runOnIdle行为与 Android 对齐(1.8);ComposeUiTestidle 语义对齐 Android——组合/测量/布局稳定即视为 idle(1.12);
  6. 关注新配置项skiko.data.cleanup.days(1.11,清理~/.skiko)、compose.swing.redispatchMouseWheelEvents(1.10)、-Dskiko.gpu.resourceCacheLimit(1.10,默认 256M)、DialogProperties.animateTransitionComposeUiFlags.isDialogAnimationEnabled(1.11);
  7. 读透 Known Issues:升级前先查看目标版本及相邻预发布版本的 Known Issues 段落(如 1.11.0-alpha02 的 macOSSwingPanel不渲染问题),必要时等待后续修复版本。

七、在仓库中继续深挖:配套代码与示例

CHANGELOG 中的能力均可在当前仓库中找到对应实现与示例,便于对照学习:

  • components/ui-tooling-preview —— 对应 1.10 的 Preview 注解统一工作,提供 commonMain / androidMain / nonAndroidMain 三源码集的 library 与 demo;
  • gradle-plugins/compose —— Compose Gradle 插件本体(87 个 Kotlin 文件),对应 CHANGELOG 中所有 Gradle Plugin 板块的变更;
  • examples/imageviewer、examples/codeviewer、examples/issues、examples/chat 等 —— 多平台示例应用,其gradle/libs.versions.toml展示了各版本坐标的实际用法;
  • tutorials —— 与 CHANGELOG 中 Desktop/Web 能力配套的实战教程;
  • benchmarks —— 与 1.8.0 中 Windows 渲染性能提升相呼应的性能基准工程。

建议将本解读与 CHANGELOG.md 原文配合使用:先通过本文建立版本演进的整体认知,再按需回到原文核对具体版本的完整条目与细节修复,即可在 Compose Multiplatform 的升级与选型中做到心中有数。

【免费下载链接】compose-multiplatformCompose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.项目地址: https://gitcode.com/GitHub_Trending/co/compose-multiplatform

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询