跨平台真正难的是底层 API 兼容
Tech
AI

跨平台不光是界面要长得一样,跨平台的差异性恰恰是底层 API 的访问方式不一样。

跨平台真正难的是绘制下面不同 API 的调用,这些底层 API 的行为、系统版本都不一样,兼容性才是跨平台,不光是画得一样。真正的跨平台不光绘制要统一,还要底层 API 统一。

Windows、Mac、Linux 这么多系统,各自还有这么多版本,它们自己都很难统一。你要跨所有操作系统统一,本身就是乌托邦。因为这些厂商还活着,每天都要整活、整创新。

Flutter 只解决了绘制问题

Flutter 这种只是解决了跨平台的绘制问题。

我不看好 Flutter,不是因为它技术不强,而是平台相互竞争,会不断做出不一样的 API。每个平台有新版本和新 API,就一定有适配过程,这就是商业不稳定的潜在因素。

Flutter 做复杂应用一直被人诟病,有各种坑和小 bug。

Qt 的问题是生产力

Qt 主要是生产力不行,跟前端差太远。AI 之前,要做好看的界面就得做很多自绘工作,花很大功夫,一般人没有自绘能力。

AI 之后我也不建议用 Qt,除非做工控设备、硬件资源有限或对性能要求高。前端既有代码比 Qt 多很多,数据量大很多倍的时候,AI 写代码比 Qt 快很多。

很多开发者说可以用 Qt 加 WebView,恰恰是你们的业务不需要真正全平台覆盖,不需要服务那些旧版本操作系统的用户。

真正商业化的跨平台

WebView 和 WebEngine 写个 demo 或简单应用肯定没问题。

但真正商业化的跨平台,不是只支持最新的 Windows、Mac、Linux 就行。有很多古老的 Windows,也有很多不同底层 API 的 Mac,跨平台要支持很多不同系统的不同版本,这些都要做到才能商业化。

这也是 Electron 这么多年积累版本兼容性的关键。PC 端的差异性基本上被 Electron 抹平了。

很多人说用 Web 解决绘制统一,再针对不同系统、不同版本的 API 做兼容,装个中间层就行。

那不就是 Electron 吗?

Electron 的臃肿不是开发者想搞成臃肿,真正做成你们认为的跨平台,臃肿就是代价,因为臃肿就是兼容性。

没有什么技术又不臃肿又能优雅跨操作系统,除非这些操作系统厂商都死掉了。

我发现推特过一段时间就有人说 Electron 各种不行。注意看,正反双方辩论都还围绕着“拿一个绘制引擎就能解决问题”。

但真正用 Electron 做商业化的人是不参与讨论的,参与讨论的都是很少做跨平台商业化的,都是个人项目自己用,以个人项目的论点在说话。

AI 时代应该怎么做跨平台

AI 时代之前,大家愿意用跨平台技术,适配再慢也比人工写多份代码强。这些跨平台技术解决的都是效率和经济问题。

但 AI 时代以后,工作量已经不是问题了。

你把一个平台的产品细节做完美,再让 AI 用另一个平台的原生语言重写一遍,其实不是问题。用原生 API,所以非常稳定。

AI 能很好地用原生去复制另一个平台的时候,我们为什么还不用原生技术写 APP 呢?

所以在 AI 时代,最好的选择还是我上一个帖子说的:PC 端老老实实用 Electron,移动端老老实实用 AI 调原生应用,各写各的。

我的所有结论都基于商业化。超级复杂的应用一定要稳定的用户体验,不要给用户小 bug。

如果大佬们自己写小工具,触发不了这种 bug,或者自己用,另当别说😂

最后还是那句话,没有做过商业化,被毒打的太少了,才会觉得自己可以🤡