跨平台开发地图 | 2026年9月

大家好,我是老刘

经历了8月的大版本轰炸,9月的跨平台圈进入了收获与消化期。KMP这边2.4.20正式版落地,上月RC里的Swift互操作新能力全部转正。MAUI迎来了.NET 11 RC1,拿到go-live生产许可,离正式版只剩一步之遥。Flutter没有大版本,但hotfix一路修到了3.47.4。RN和uni-app x则进入了版本空窗期。一起来看看各框架的具体变化。


1. 九月跨平台技术综述

9月跨平台圈的关键词是正式版落地稳定消化

① Flutter 连发hotfix,最新版3.47.4

9月Flutter没有新的大版本。3.47大版本发布后stable频道连续推出四个hotfix,其中3.47.3(9月9日)和3.47.4(9月11日)落在9月,集中修复SwiftPM/Xcode 27构建失败、Impeller在PowerVR GPU上的渲染异常、flutter test崩溃等问题。当前最新稳定版为3.47.4

② React Native 版本空窗,0.88开发中

9月RN没有发布新版本,0.87仍是当前最新稳定版。按照近几个版本两个月左右的发布节奏,0.88预计10月到货。这个月对RN团队来说是个不错的升级窗口。

③ KMP 2.4.20正式版,Swift互操作转正

Kotlin 2.4.20正式版(9月7日)发布,上月RC中的核心能力全部落地:sealed class映射为Swift枚举、跨语言继承、自动生成Package.swift、BTA扩展到JS/Wasm/Metadata等。KMP在iOS端的开发体验又上了一个台阶。

④ uni-app x 版本空窗,蒸汽模式进入稳定期

截至发稿,uni-app x官方更新日志最新版本仍是5.24(8月13日),9月暂无新版本发布。三端蒸汽模式上线后进入稳定修复期。

⑤ .NET MAUI RC 1,go-live许可到手

.NET 11 RC 1(9月8日)发布,这是.NET 11正式版前的关键节点,附带go-live支持许可,可以用于生产环境。MAUI这边带来了dotnet test移动端测试工作流、TabbedPage徽章、主题化启动画面等一批实用更新。


2. Flutter:hotfix修到3.47.4,大版本后的稳定期

Flutter更新日志:docs.flutter.dev/release/rel...

9月Flutter没有新的大版本发布。3.47大版本之后stable频道连续推出了3.47.1 (8月19日)、3.47.2 (8月27日)、3.47.3 (9月9日)、3.47.4 (9月11日)四个hotfix。当前最新稳定版为Flutter 3.47.4,内置Dart 3.13.3。

2.1 四个hotfix修了什么

构建与工具链

修得最多的一块。3.47.2解决了启用SwiftPM时iOS/macOS构建失败、Xcode 27下构建Flutter Swift包失败的问题。3.47.4集中处理了两个高发工具崩溃,Windows Smart App Control等安全策略拦截Flutter二进制导致的崩溃占工具崩溃的16.9%,flutter test被测试进程的非JSON输出干掉占11.7%,现在都改成了可操作的错误提示。其余还有impellerc在Windows Unicode路径下崩溃、Xcode安装不完整时flutter_tools崩溃、flutter doctor在Android SDK Command-line Tools 23.0+下误报license状态等。

渲染与平台

3.47.3修复了Impeller在B系列PowerVR GPU上的视觉异常与性能下降,以及Actions.handler全平台返回null的问题。3.47.1修复Flutter GPU无法在Linux/Windows的release构建中启用。3.47.2修复Windows外部纹理导致的引擎崩溃、Linux触摸事件内存泄漏和屏幕阅读器不朗读标题元素。

热重载与调试

3.47.1修复WASM Web构建的热重启失效、嵌套Pub workspace成员包热重载失效。3.47.4修复iOS 27设备调试时应用白屏挂起数分钟的问题。

安全与发布

3.47.2更新libpng修复安全漏洞。3.47.1验证插件类标识符,防止代码注入GeneratedPluginRegistrant。3.47.4把native assets的最低iOS版本提升到15,修复使用高部署目标原生库时App Store提交被拒(ITMS-90208)的问题。

2.2 老刘点评

3.47这种结构级大版本,hotfix连发是意料之中的事。值得关注的是3.47.2里集中修复的SwiftPM + Xcode 27构建问题,如果你升级到Xcode 27后iOS构建挂了,升到3.47.2+就能解决。

3.47.4修的两个高发工具崩溃也很典型,一个是flutter test被非JSON输出干掉,一个是Windows安全软件拦截二进制。这两个问题平时不显眼,真碰上就是一脸懵,现在都改成了可操作的错误提示。建议直接升到3.47.4,hotfix版本风险低,不用等。

另外一个信号是Impeller的问题在持续被打磨,这次修到了PowerVR GPU这种相对小众的硬件上,说明Impeller的设备覆盖面正在收尾。还在用Skia回退方案的团队,建议趁这个月测试一下Impeller在你目标设备上的表现,回退选项未来是要移除的。


3. KMP (Kotlin Multiplatform):2.4.20正式版发布,Swift互操作全面落地

Kotlin新特性:kotlinlang.org/docs/whatsn...

9月7日,Kotlin 2.4.20正式版 发布(9月2日先发RC3)。上月我们介绍的RC中的新能力,这个月全部转正。当前最新稳定版为Kotlin 2.4.20

3.1 Swift Export两大能力转正

① Sealed Class映射为Swift枚举

Kotlin sealed class/interface现在映射为Swift枚举,Swift端可以用switch穷尽匹配,新增子类时编译器直接警告。具体实现上,Swift export会为每个sealed类型生成.sealedType()方法,返回一个与子类一一对应的Swift枚举,嵌套调用可以匹配更深的层级。

② 跨语言继承

Kotlin定义的接口可以在Swift端实现,再传回Kotlin侧调用。典型场景是反向导入模式,比如在Kotlin里定义CryptoProvider接口,在Swift端用CryptoKit实现,然后传回Kotlin调用。纯Swift库接入KMP项目的通道被打通了。

3.2 自动生成Package.swift

assembleSharedXCFramework Gradle任务现在自动生成Package.swift文件。如果你的XCFramework依赖SwiftPM包,分发时可以直接被SwiftPM正确解析。

3.3 BTA扩展到JS/Wasm/Metadata

Build Tools API在2.2.0支持Kotlin/JVM之后,2.4.20新增对Kotlin/JS、Kotlin/Wasm和Kotlin metadata目标的支持,目前为opt-in。官方计划从2.5.0开始默认启用,构建工具生态统一又近一步。

3.4 其他值得关注的更新

  • Kotlin/Wasm

    支持Wasmtime作为wasmWasi目标运行时;companion object初始化顺序对齐JVM行为,跨平台一致性提升

  • Kotlin/JS

    新的浏览器测试DSL;支持导出suspend lambda为JS async函数,混编Kotlin/TypeScript项目更顺畅

  • 编译器原生镜像

    实验性发布,作为kotlinc的直接替代品,启动更快、性能更高,内置Serialization、Compose compiler等常用插件

  • 协程堆栈恢复

    StackTraceRecoverable接口允许自定义异常在堆栈恢复时保留属性

  • 标准库新增

    allDistinct()allDistinctBy()allEqual()allEqualBy()等集合函数

3.5 后续版本规划

官方发布计划显示,下一个语言版本Kotlin 2.5.0预计2026年12月发布,2.5.20工具版本预计2027年3月。

3.6 老刘点评

上月RC时老刘就说过,sealed class映射Swift枚举和跨语言继承这两个能力对KMP iOS端开发是实打实的提升。这个月正式版落地,意味着可以往生产项目里上了。

如果你之前因为Swift互操作的各种墙而对KMP持观望态度,2.4.20是一个值得重新评估的节点。iOS端的开发体验正在从"能用"向"好用"转变。另外12月的2.5.0会把BTA默认化,KMP的构建体验还会再提一档。


4. React Native:版本空窗期,0.88开发中

React Native博客:reactnative.dev/blog

9月RN没有发布新版本,0.87仍是当前最新稳定版

4.1 0.88进展

官方版本页面显示0.88仍处于开发阶段(Next version),尚未发布RC。参考近几个版本的节奏(0.85四月、0.86六月、0.87八月),0.88预计10月前后发布。

4.2 空窗期该做什么

按0.87的升级指引,这个月适合RN团队做两件事。

① 升级0.87

Strict TypeScript API转正是长期收益,类型从源码生成、API范围收敛到根导出,升级后类型系统的可靠性明显提升。注意deep imports(react-native/Libraries/*)现在是类型错误,需要迁移。opt-out开关在0.88之前有效,0.89将移除,所以拖得越晚迁移成本越高。

② 试用SwiftPM

0.87引入的实验性SwiftPM支持可以摆脱Ruby/Bundler/CocoaPods依赖,只需要Xcode。新项目可以用npx react-native spm --deintegrate试试水,老项目等生态插件适配再跟进。

4.3 老刘点评

RN这个月没动静,反而是好事。0.87的Strict TypeScript API是个伤筋动骨的变化,社区需要时间消化,插件生态需要时间适配。

老刘的建议还是那个,空窗期就是升级窗口期。等0.88发布时再升,你面对的就是双份迁移成本。


5. uni-app x:版本空窗,蒸汽模式进入稳定期

uni-app x更新日志:doc.dcloud.net.cn/uni-app-x/r...

截至9月中旬,uni-app x官方更新日志的最新版本仍是5.24(8月13日),9月暂无新版本发布。

5.1 当前状态回顾

经过8月的5.23/5.24双版本,uni-app x的蒸汽模式已经覆盖Android/iOS/鸿蒙三端,并且不再强制要求强类型。5.24集中修复了5.23引发的text组件渲染、useComputedStyle样式获取、uts付费插件编译等问题,目前蒸汽模式整体进入稳定修复期。

5.2 老刘点评

8月三端蒸汽模式全量上线,9月歇一口气很正常。自研渲染引擎这种大工程,上线之后的稳定期比堆新功能更重要。

对开发者来说,这个月是把项目迁到蒸汽模式的好窗口。该修的坑在5.24修了一轮,官方又没塞新东西进来,迁移环境相对稳定。等下个版本带着新能力来了,迁移和新功能适配又得搅在一起。

另外提一句,如果你的项目还没想好要不要上蒸汽模式,判断标准没变,看你要不要用到uts插件生态和更接近原生的渲染性能。普通页面VDOM模式够用,不用为了新而新。


6. .NET MAUI:.NET 11 RC 1发布,go-live许可到手

.NET MAUI博客:devblogs.microsoft.com/dotnet/cate...

9月8日,.NET 11 Release Candidate 1 发布。这是正式版前的关键节点,附带go-live支持许可,官方明确可以用于生产环境。MAUI相关的更新如下:

6.1 dotnet test移动端测试工作流

这是RC1最有分量的更新。dotnet test工作流扩展到Android、iOS、tvOS、macOS和Mac Catalyst,测试直接在移动设备/模拟器或桌面目标的应用进程内运行。

配套的新项目模板包括androidtestiostesttvostestmacostestmaccatalysttest,两行命令就能跑起来。

console 复制代码
dotnet new androidtest -n MyTests
cd MyTests
dotnet test

测试框架不限于MSTest,任何Microsoft.Testing.Platform支持的框架(如NUnit)都可以配置。另外仅Instrumentation的Android项目现在可以用dotnet run直接跑,不需要声明Activity,BenchmarkDotNet这类无头设备测试工具也能用了。

6.2 控件更新

TabbedPage徽章

子页面可以通过TabbedPage.BadgeTextBadgeColorBadgeTextColor附加属性显示徽章,Android、iOS、Mac Catalyst和Windows都支持初始设置和运行时更新。小红点提醒这种高频需求终于有官方方案了。

SwipeItem显式颜色

新增SwipeItem.IconColorSwipeItem.TextColor,支持AppThemeBinding

BlazorWebView静态内容缓存

通过BlazorWebView.StaticContentCacheControlProvider可选开启本地静态资源缓存,覆盖Android、iOS、Mac Catalyst、Windows和Tizen。

FlyoutPage迁移Handler架构

iOS和Mac Catalyst上FlyoutPage默认使用FlyoutViewHandler,Apple平台主要多页控件的Handler迁移至此完成。

6.3 平台特性

  • 主题化启动画面

    MauiSplashScreen支持暗黑模式独立配置,包括DarkFileDarkColorDarkTintColor

  • Resizetizer质量可调

    新增ResizeQuality元数据,可选AutoBestFastest三档采样质量

  • Android系统栏跟随MAUI色调

    设置MauiAndroidSystemBarsUseMauiChrome后,状态栏和导航栏背景可以匹配NavigationPage、Shell等容器 chrome 的颜色

6.4 XAML增量热重载可靠性提升

XAML增量热重载仍是预览特性,但RC1修了一批关键问题。应用级资源编辑现在能触达所有DynamicResource使用者,x:Name字段会与新视觉树协调,CollectionView.ItemTemplate内的属性编辑不再需要替换模板或重置滚动位置。

6.5 Android性能三连

构建更快

Release CoreCLR示例应用普通托管源码改动构建从68秒降到52秒,清单改动从40秒降到11秒,类型映射生成从3.2秒降到0.8秒。

包体更小

Android trimmer现在移除IJavaObject类型中未使用的方法,ARM64包减小约665KB(开启R8约718KB)。

启动更快

Release构建默认包含部分ReadyToRun编译,基础模板启动快2.4%,示例模板快4.5%。Shell应用延迟加载未使用的tab基础设施,冷启动平均快约36ms。

6.6 Apple平台

  • NativeAOT和CoreCLR应用默认使用trimmable-static注册器
  • macOS和Mac Catalyst的NativeAOT构建默认生成dSYM调试符号
  • 绑定作者可以把可失败的Objective-C初始化器暴露为可空静态工厂方法

6.7 老刘点评

RC1最值得关注的不是某个具体功能,而是go-live许可本身。这意味着MAUI在.NET 11上的形态基本定型,企业项目现在就可以基于RC1做升级评估,不用等11月正式版。

功能层面,dotnet test移动端测试工作流是补齐短板的更新。MAUI的单元测试和UI测试一直搭不起来顺畅的工程化流程,现在官方把这条路修通了。加上Android构建、包体、启动三连优化,MAUI在性能这个传统弱项上也在持续补课。


7. 本月跨平台技术变化汇总

框架 8月状态 9月状态 关键变化
Flutter 3.47.0 3.47.3 三连hotfix,修复SwiftPM/Xcode 27构建、Impeller渲染、libpng安全漏洞
KMP 2.4.20-RC 2.4.20正式版 Swift Export密封类/跨语言继承转正、自动Package.swift、BTA扩展、2.5.0定档12月
React Native 0.87 0.87(无变化) 版本空窗期,0.88开发中,预计10月发布
uni-app x 5.23 / 5.24 5.24(无变化) 版本空窗期,三端蒸汽模式进入稳定修复期
.NET MAUI Preview 7 RC 1 go-live许可、dotnet test移动端测试、TabbedPage徽章、Android性能三连优化

老刘建议

  1. Flutter用户 建议升到3.47.4,尤其是用Xcode 27遇到iOS构建失败、跑flutter test莫名崩溃、或Windows上被安全软件拦截的团队。hotfix版本风险低,不用等。

  2. KMP用户 2.4.20正式版可以上生产了。做iOS端的项目重点体验sealed class映射Swift枚举和跨语言继承,之前绕开的互操作方案可以考虑简化。

  3. RN用户 趁空窗期升级0.87,完成deep imports迁移。0.88十月到货,别攒着两份迁移一起做。

  4. uni-app x用户 本月无新版本,适合把现有项目迁到蒸汽模式。迁移窗口稳定,不用边迁移边追新特性。

  5. MAUI用户 RC1带go-live许可,企业项目可以开始基于RC1做.NET 11升级评估。重点验证dotnet test测试工作流和Android性能优化的实际效果。

技术的车轮滚滚向前,只有不断学习,才能永远在牌桌上。


🤝 如果看到这里的同学对客户端或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。

🎁 私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。

💬 : laoliu_dev
📂 老刘也把自己历史文章整理在GitHub仓库里,方便大家查阅。

🔗 github.com/lzt-code/bl...

相关推荐
HouWan5 小时前
Flutter iOS UISceneDelegate 迁移指南:理清新的 Scene 生命周期
flutter·ios·app
技术任我行XTing8 小时前
【DFX系列】Flutter 鸿蒙应用外接纹理介绍及问题定位
flutter·harmonyos
恋猫de小郭10 小时前
Flutter GSoC 2026 提案进度解读,补上 DevTools、FFI 和原生平台的关键缺口
android·前端·flutter
●VON1 天前
Flutter 鸿蒙插件适配实战:用 flutter_native_timezone_2025 1.0.1 读取当前时区与系统目录
flutter·华为·harmonyos·鸿蒙
黑科技iOS上架1 天前
iOS深度混淆flutter应用的最佳实践
flutter·ios·混淆·审核·深度混淆
Patrick_Wilson1 天前
桌面端发布的真实成本:签名、公证和那支不能共享的 USB Key
ci/cd·electron·客户端
恋猫de小郭1 天前
CPF-Flutter 社区提出折叠场景分栏(平行视界) 方案
android·前端·flutter
程序员老刘2 天前
Android Studio Quail 4发布,看日志我以为谷歌放弃Flutter了
flutter·android studio·ai编程