背景
在一些小众软件方面,跨平台是一个衡量应用的关键要素。对于网络代理这种非常基本的要求,跨平台更是几乎必需的衡量标准。
列表

跨平台底层技术
首先要明白大致的原理,大多数应用是如何实现跨平台的?
-
原生抽象,在上层提供统一的API,下层由框架来调用各种原生功能。从而做到开发体验一致。
Qt(C++,研发Qt的商业公司。Pyside也是Qt)
React Native(js,背靠facebook,只有移动端)
-
自绘引擎
Flutter(dart,背靠谷歌),Avalonia(C#,背靠微软)
-
Webview
webview构建页面都是js前端,不同的地方在于各个框架使用的后端语言。
Electron(nodejs后端)、Tauri(Rust后端,商业公司)、Wails(go语言后端)
Qt
Qt是目前最为成熟的跨平台GUI构建框架,但是由于一些缺陷如今逐渐式微。
-
使用C++编写,这是优势,但是同时C++具有较高的学习成本,让C++人才来写GUI多少有些大材小用。
-
Qt的收费问题
Qt6的使用是否需要付费,取决于具体的使用场景和许可证类型。Qt提供了两种主要的授权模式:开源协议(LGPL/GPL)[&和商业授权&]。
开源协议(LGPL/GPL)
Qt6在开源协议下是免费的,但有一定的限制条件:
桌面应用:可以免费使用动态链接的方式开发闭源商业软件(Windows/macOS/Linux),但需遵循LGPLv3协议,并在软件中声明使用了Qt。
移动端和嵌入式开发:Qt官方未提供动态库支持,需自行编译动态库,或者购买商业授权。
部分模块限制:某些模块(如Qt Charts、Qt Digital Advertising)仅限商业授权使用。
商业授权
商业授权适用于需要更多功能和灵活性的场景:
支持静态链接:允许闭源发布,适用于所有平台(包括移动端和嵌入式)。
技术支持:提供专属技术支持和独家模块(如自动化测试工具、MCU支持)。
费用:每位开发者的年度订阅费用约为3950美元,三年订阅费用约为8400美元。嵌入式设备的分发费用需根据项目规模单独报价。
- UI界面较为简陋,Qt可以构建好看的界面,但是并不像其他框架那样默认提供(Flutter默认页面也是好看的)或是容易编写(web技术轻松构建美观页面)

Flutter
Flutter使用了Skia自绘引擎,相较于webview具有显著优势。
目前在企业中,已有使用Flutter作为跨平台选择的现象。
生态偏向移动端。
Tauri
Tauri是使用Rust开发的webview跨平台框架。不同于Electron,其调用了系统原生的webview,但是正因如此,这个框架具有一些兼容性问题,比如在windows7上没有预装Edge,因此也就没有Webview,需要用户手动安装,在Linux平台,依赖于WebKitGTK,会存在版本不统一的情况。
Tauri相较于Electron,并没有从根源上解决问题。Electron的问题是内存占用大,这是由于webview,只要继续使用webview,就不太可能写出内存占用低的应用程序。
Tauri只是解决了安装包体积大的问题,然而这个问题说大不大,只是表面上好看而已。
因此,商业型项目通常还是使用Electron作为webview跨平台选择。
评价
除去nekobox以及clashN。GUI for clash和GUI for singbox是同一个作者。
一共10位开发者,有4位使用了webview,3位使用flutter,2位使用Qt(pyside归到qt里面),以及1位使用C#不知道哪个框架。
足以看出,webview在开发者中多受欢迎,主要有以下几个原因:
-
一致性高,webview构建的页面在不同平台能够显示相同的页面。
-
开发难度小,使用前端框架可以轻松构建页面,并且可以利用前端生态。
webview的开发者工具应该算是GUI程序中最强的开发者工具,调试起来简单。
轻松具备
热重载等特性,开发效率高。 -
更容易做出美观的界面,因为前端构建页面的自由程度非常高。
但是用户体验就很扯了,内存占用大不说,bug还多。
[0806/044639.668:ERROR:icu_util.cc(243)] Invalid file descriptor to ICU data received. - 魂祈梦 - 博客园
vscode我用起来没啥bug,但是utools会有无法唤醒的情况,和clash的情况类似。
我的使用历程
最早期使用一个不知名的vpn,打开了新世界的大门,然后有一天不能用了。
后来使用蓝灯、老王等vpn应用。
接触到Youtube之后,开始使用SSR。
然后是v2rayN;
后面不知为啥就换成clash了,clash死后又换成clash verge rev。
别的没什么,clash verge rev的bug还是挺多的,卡死、页面只显示左上角、点任务栏点不出来。
而且很重要的一点是托盘上右键选项中没有更换节点的菜单,这导致更换节点必须打开GUI页面。