大家好,我是老刘
跨平台圈7月的关键词是大版本后的补课与突破。Flutter持续发hotfix稳固3.44生态,KMP进入2.4.20-Beta周期,uni-app x迎来5月以来的最大更新,iOS蒸汽模式上线,而.NET MAUI则在Preview 6中正式用CoreCLR取代了Mono。一起看看各框架的具体变化。
1. 七月跨平台技术综述
7月的跨平台圈延续了6月"稳中有进"的基调,但各有侧重:
① Flutter hotfix连发,生态持续收敛
3.44大版本发布后,Flutter团队在7月又连发了4个hotfix(3.44.3→3.44.6),修复了从SwiftPM并发编译到Android app bundle打包的一系列问题。整体节奏是"大版本后的补课季",没有新功能但稳定性在持续提升。
② KMP 2.4.20-Beta1开启新功能周期
Kotlin团队在6月24日发布了2.4.20-Beta1,带来了协程堆栈恢复、klib增量编译默认开启等实用改进,Build Tools API也扩展到了JS/Wasm/Metadata目标。
③ uni-app x iOS蒸汽模式正式上线
这是本月最大的惊喜之一。uni-app x继5月鸿蒙蒸汽模式后,7月发布了iOS蒸汽模式,号称"比原生更快的渲染系统";同时发布了uni-ui x组件库、字节码编译等重磅更新。
④ .NET MAUI CoreCLR全面接管,Mono退出历史舞台
Preview 6是MAUI的分水岭版本,CoreCLR成为移动端唯一运行时,Mono正式退出。另外CollectionView2终于登陆Windows,Shell架构在Android端改用Handler实现。
2. Flutter:3.44 hotfix持续迭代,已至3.44.6
Flutter更新日志:docs.flutter.dev/release/rel...
6月底到7月,Flutter稳定版没有发布新功能大版本,但hotfix一直在持续。从6月12日的3.44.2到7月中旬的3.44.6,目前最新版本为3.44.6(约7月10日发布),Dart版本同步在3.12.x。
2.1 7月hotfix清单
-
3.44.3 修复Animated PNG渲染崩溃、SwiftPM并发编译崩溃、Android GLES fence纹理销毁崩溃等问题
-
3.44.4 修复Linux平台
FlAccessibleTextField边界检查问题 -
3.44.5 修复Android app bundle中使用flavor时
libapp.so未包含的问题、文字阴影渲染位置偏移、Impeller/Vulkan下旋转或关闭时的崩溃 -
3.44.6 (上周发布) 修复Linux上启用native assets时缺少
CMakeCache.txt导致的崩溃、Android instrumented test运行时崩溃
2.2 老刘点评
3.44系列的hotfix频率保持一贯的节奏,从3.44.0发布到现在已经6个hotfix了。但看修复内容基本都是边界情况和特定场景的崩溃,核心功能一直稳定。建议:个人项目和技术爱好者可以放心升级到3.44.6,企业项目保持"观察两个月"策略,目前距离3.44.0发布约两个月,如果团队等不及可以开始评估升级。
3. KMP (Kotlin Multiplatform):2.4.20-Beta1发布,协程堆栈恢复与增量编译
Kotlin 更新日志:kotlinlang.org/docs/whatsn...
继6月的2.4.0-RC2之后,Kotlin团队在6月24日发布了Kotlin 2.4.20-Beta1,开启2.4.20的EAP周期。当前KMP依赖的Kotlin稳定版为2.4.10。本次更新中,与KMP直接相关的改进集中在构建效率、调试体验和多平台目标覆盖上。
3.1 与KMP相关的关键变化
① 协程堆栈恢复 KMP跨平台协程调试体验提升
标准库新增StackTraceRecoverable接口,允许自定义异常在kotlinx.coroutines的堆栈恢复过程中保留特定属性(如行号、错误码)。在KMP项目中,协程是跨平台共享代码的核心机制,这一改进能有效提升复杂协程链的调试效率。
② KMP/Native klib增量编译默认开启
从2.4.20-Beta1开始,KMP的klib产物增量编译默认启用。如果只有部分模块变化,仅重新编译受影响的部分,大幅缩短debug构建时间,这对多模块KMP项目尤为关键。
③ KMP/JS 全新的浏览器测试DSL
Kotlin/JS作为KMP的Web目标,其测试基础设施终于升级。取代已弃用两年的Karma,新DSL基于Mocha + Webpack(后续将替换为Vite)+ Playwright,支持Chromium/Firefox/WebKit三引擎。
④ KMP构建工具统一 BTA扩展到JS/Wasm/Metadata
BTA(Build Tools API)之前仅支持JVM,现在开始覆盖Kotlin/JS、Kotlin/Wasm和Kotlin metadata目标。这意味着KMP的构建工具生态正在走向统一,未来第三方构建工具可以更一致地处理所有KMP目标。
⑤ KMP/Wasm require()调用变更与初始化顺序对齐
如果KMP项目涉及Wasm目标,需要注意@JsFun中的顶层require()调用将被报错,需迁移到@JsModule或import()表达式。同时companion object初始化顺序与JVM对齐,提升了跨平台一致性。
3.2 老刘点评
2.4.20-Beta1中与KMP最相关的两个更新是klib增量编译 和BTA扩展。前者对多模块KMP项目的构建效率是实打实的提升;后者虽然偏向基础设施,但长期看是KMP构建工具生态统一的关键一步。协程堆栈恢复对KMP跨平台协程调试也有帮助。从2.4.0到2.4.20-Beta的节奏看,Kotlin团队在加速迭代,KMP开发者值得在开发环境试跑一下这个Beta版本,重点关注增量编译的实际效果。
4. React Native:0.86稳定运行,暂无新版本
React Native博客:reactnative.dev/blog
7月RN没有发布新的版本,0.86自6月11日发布以来保持稳定。目前RN博客上最近的文章仍然是0.86的发布公告。
如果你还没升级到0.86,且正在被Android 15+的键盘避让或状态栏遮挡问题困扰,值得立刻升级。
5. uni-app x:iOS蒸汽模式上线,5.14/5.15双版本连发
uni-app x更新日志:doc.dcloud.net.cn/uni-app-x/r...
6月uni-app x标注为"暂无更新",但7月迎来了大爆发!连续发布了5.14 (7月2日)和5.15(7月9日)两个版本。
5.1 5.14版本:iOS蒸汽模式 + 字节码编译
这是自5月以来的最大更新,核心变化:
① 【重要】iOS蒸汽模式上线
继5月鸿蒙蒸汽模式后,iOS蒸汽模式正式发布。官方号称"比原生更快的渲染系统",加上之前Android已经支持的蒸汽模式,uni-app x在三端的渲染引擎统一上迈出了一大步。
② 【重要】编译为字节码
蒸汽模式下支持编译为字节码,大幅提升编译速度。这对大型项目的开发体验是实打实的改善。
③ 【重要】uni-ui x 组件库发布
全新的uni-ui x组件库,为uni-app x项目提供官方UI组件支持。
④ 新增大量API和组件
- 传感器API:罗盘(compass)、加速度(accelerometer)、陀螺仪(gyroscope)
- 通讯录API(contact)、日历API(calendar)
- iOS/Android:
picker组件、uni.login微信登录、uni.share微信分享、生物认证(authentication) - Web平台:
list-view支持scroll-into-view属性 - 鸿蒙蒸汽模式:tabBar、
sticky-section、rich-text动态Slot分配、CSScubic-bezier支持等
⑤ 大量Bug修复
覆盖Android、iOS、鸿蒙、Web全平台,涉及swiper、list-view、scroll-view、input、textarea、web-view、canvas等几乎所有常用组件。
5.2 5.15版本:Bug修复
- 修复iOS蒸汽模式下
canvas组件在部分设备调用toDataURL异常 - 修复Android VDOM模式下大写Boolean类型被识别为对象的条件判断问题
5.3 老刘点评
uni-app x这波更新力度很大。iOS蒸汽模式的上线意味着uni-app x在渲染引擎自研路上又进了一步,三端(Android/iOS/鸿蒙)都有了蒸汽模式支持。字节码编译对大型项目的编译速度改善也很实用。加上uni-ui x组件库的发布,uni-app x的生态正在快速完善。如果你的项目需要同时覆盖App和小程序,值得重点关注。
6. .NET MAUI:Preview 6发布,CoreCLR全面取代Mono
.NET MAUI博客:devblogs.microsoft.com/dotnet/cate...
这个月MAUI有两件大事:.NET 11 Preview 6 (6月29日)和CoreCLR替代Mono的里程碑公告(7月14日)。
6.1 CoreCLR正式成为唯一运行时
7月14日,David Ortinau发表文章宣布:从Preview 6开始,CoreCLR是.NET MAUI移动端唯一运行时。 选择Mono的编译选项已被移除,无论Android、iOS还是Mac Catalyst,都运行在CoreCLR上。
关键数据:
- iOS/Mac Catalyst:整体性能比Mono更快
- Android:启动速度和包体大小与Mono差距在10%以内
- 支持完整的.NET诊断工具(
dotnet-trace、dotnet-counters) - NativeAOT on Android的基础设施已落地
- Blazor WebAssembly不受影响,继续使用Mono
6.2 Preview 6的MAUI更新
① CollectionView2登陆Windows
之前Windows端缺少CollectionView2的支持,Preview 6补齐了这个短板。
② Android端Handler-based Shell架构
Shell导航在Android端改用Handler架构实现,性能和可维护性提升。
③ 移除Compatibility包
Microsoft.Maui.Controls.Compatibility包正式移除,进一步清理了历史包袱。
④ 其他改进
- HybridWebView现在支持AOT
- Geolocation新增最小距离过滤
- Android MediaPicker支持结果恢复
6.3 其他值得关注的更新
- SkiaSharp 4.0稳定版(6月9日):4.148.0是SkiaSharp v4的首个稳定版
- 安卓最低版本升至API 24,API 37正式稳定(延续6月的内容)
6.4 老刘点评
CoreCLR全面取代Mono是.NET MAUI历史上的分水岭。这意味着移动端和云端/桌面端共享同一套运行时,性能、诊断工具、生态完全统一。对于C#全栈团队来说,MAUI在.NET 11时代的技术价值正在快速提升。不过官方也坦诚要求开发者"自己测量",不同场景表现可能不同,建议有条件的团队在Preview 6上跑一下自己的应用做验证。
7. 本月跨平台技术变化汇总
| 框架 | 6月状态 | 7月状态 | 关键变化 |
|---|---|---|---|
| Flutter | 3.44.2 | 3.44.6 | 连发4个hotfix,稳定性持续提升 |
| KMP | 2.4.0-RC2 | 2.4.20-Beta1 | 协程堆栈恢复、klib增量编译、JS测试DSL |
| React Native | 0.86 | 0.86(无变化) | 无新版本发布 |
| uni-app x | 暂无更新 | 5.14 / 5.15 | iOS蒸汽模式、字节码编译、uni-ui x组件库 |
| .NET MAUI | Preview 5 | Preview 6 | CoreCLR替代Mono、CollectionView2上Windows |
老刘建议
- Flutter用户 3.44.6已经比较稳定,个人项目可以升级了。企业项目建议下月评估。
- KMP用户 2.4.20-Beta1值得在开发环境试用,特别关注klib增量编译对构建速度的提升。
- RN用户 0.86够稳,等待下个大版本即可。
- uni-app x用户 iOS蒸汽模式值得立刻体验,字节码编译对编译速度提升明显。
- MAUI用户 Preview 6的CoreCLR迁移是重大变化,建议在测试环境中验证兼容性。
技术的车轮滚滚向前,只有不断学习,才能永远在牌桌上。
🤝 如果看到这里的同学对客户端或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。
🎁 私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。
💬 : laoliu_dev
📂 老刘也把自己历史文章整理在GitHub仓库里,方便大家查阅。