本人目前只有 C++、Python 的编程经验,比较熟悉 C++和相关技术;以下是最近在考虑的:qt:很熟悉,个人比较偏向,但 qt 在 Android 上好像并没有见到什么应用使用,是有什么坑吗?flutter:不太了解,但看着好像是性能更好的 electron ?electron:最流行的方案,但我并不怎么会 web 开发,js 、html 、css 也没怎么用过大伙们有什么建议吗?或者有什么推荐的?

qt 在安卓其实也有用,不过都是写工业领域的东西(好像还有人移植了 libreoffice

先看看你的工具关注的点有哪些(例如浏览器支持、性能、兼容性)再去拿需求、商业模型试套下几个框架看看能不能满足

要跨桌面和移动端最好就是 flutter 。electron 都搞不了 android 。

其实最方便的跨平台就是 web 了,而 electron 本身就是基于 web 的,所以使用 electron 是可行的。手机端没有 electron ,但你可以写一个只有 webview 的 app ,然后在里面加载你的页面。用这种方式写的工具,要注意安卓不能用 electron 提供的和系统交互的 API (比如文件系统相关的,比如 node 相关的),要在 app 里为你的工具写和系统交互的 API 。

跨安卓直接否决了 electron 啊,为啥还有这个选项?

具体是什么功能呢?与系统交互较深的应用要求跨端都很折磨

maui blazor 考虑下

qt 或者 flutter ,其他不推荐

又跨移动端又跨桌面端的话可以试试 Avalonia 。

微信小程序。

我觉得 web 跨端最好了,而且学习成本低,更新也快。要不你跳出 cs 模式的软件,搞搞 bs 得,有浏览器就能用

谢谢,这下否决 qt 了(

这样嘛,总是听到移动端很多 app 是 web 套壳,就以为 electron 也可以用了(😂

你们都忽略 c#呢?堪称最强跨平台语言,从十多年前暴雪就用 c#做跨平台游戏,到现在做的原神 android ,ios ,windows ,mac ,web ,甚至 ps ,xbox ,switch 都跨,而且性能强悍,算是最强性能跨平台语言之一吧。当然了 这是得益于 unity 因此哪怕不是游戏,但凡做 3D APP 都是最佳选择高性能且轻巧(相对 qq 自带虚幻),如果做传统静态 2D APP 或许不是个好选择。

应该不适合,用小程序可能要阉割功能了

熟悉 C++,当然是 c++ builder 啊,用 firemonkey 框架通杀 linux,win,android,ios 平台桌面应用开发 delphi/c++ builder 一直是王者

具体功能涉及大量音频处理,除此之外没有什么需要大量计算的地方,会在本地运行用于处理音频的模型;不过我并不是很了解安卓开发,但是还想折腾下用用 npu ,不知道靠谱不靠谱?

是有在考虑

移动端开发就 flutter 。桌面端优先就 qt 。qt 可以搞安卓,有些小坑,我之前听说本地文件打开框有点什么如果你不熟悉。

建议 python 开发后端,自己搞个网页。前端可以让 chatgpt 写,我自己就用这个写了个可以用来处理音频的工具,也是 0 前端经验。有兴趣可以看下。 aicosers.com/

c++ 的话 cocos2d 了解下

才发现你也是音频工具,不过我这边是处理过程放到了服务器上进行,异步处理后发送到用户提供的邮箱。总之前端这块 chatgpt 其实可以代劳很多了,自己随便看看代码进行修改下就可以拿来用。

tauri 最近 beta 出了 支持 win linux mac Android ios

你要跨桌面和移动 flutter ,肯定是首选 。其次只能是 react native 。其他你就别考虑了。 flutter 和 rn 都可以直接调用 c++ 的动态库,react native 的坑并不比 flutter 少。不管 rn 还是 electron 你不熟悉 js css 会发现后面你还要学 vue/react typescript,虽然不难,但水也其实也很深也不是看起来那么轻松electron 在移动端 不靠谱,直接排除。除非你移动端是 webapp 就可以搞定,但是你不熟悉 js ....所以还是排除QT 别人有说了我就不重复了。说 flutter 的几个缺点 你自己考量:ui 的嵌套地狱,其实也还好,强迫自己适应呗,自己多封装。dart 语言的问题,个人认为 dart 除了轮子少(其实现在不少了),其他都还不错,入门简单 装完环境就直接开始写就好了。C# java 很接近 和 C++也相近 。性能也不差。你熟悉 C++压根不用专门学 dart ,装完环境直接开撸就行。有 copilot 直接面向 ai 编程就好了。pc 端的 webview ,目前只有简单的实现 没有 electron 那么成熟,可以说还有点不太靠谱,这要看你用不到得到了。移动端的 webview 没问题pc 端的多窗口,目前只有第三方实现,但是也能用。这方面我没有了解太多。第三方 ui 组件库比较少也比较简陋,很多样式需要自己撸,没法复用 vue react 的轮子。这要看你的项目的 ui 多复杂了。flutter 的 StreamBuilder 和 FutureBuilder ValueListenableBuilder 有一些阴间,需要点时间适应。

补一条 pc 端的菜单实现 flutter 弄也有点坑。

electron 本质还是使用的 html/css ,只要你做好配置,完全可以编译出两套代码,适合 pc 和 客户端的。当然 pc 功能要阉割掉调用原生能力的内容。

来个不那么正常的 : Kotlin Multiplatform这个不符合楼主的技术栈,但确实是三端支持

不要吧桌面和移动端。用一个给跨了。走不通的

flutter 吧

#22 我这个没有用户,自己弄着玩的,所以要本地处理😶‍🌫️

#24 谢谢您写这么多,基本上是打算用 flutter 了🙇‍

react/electron+reactNative?

github.com/gskinnerTeam/flutter-wonderous-app 这是 flutter 的 showcase , mac windows android mac

啊,那涉及到音频处理的话,那可能就只能推荐 Avalonia 了。。能做高效数据处理,能跨端跨平台,开发简单,就只有这一个选择。js 处理音频比较扯.不过也可以 C++ 负责处理音频,提供接口给 electron / cordova 调用。跟 QQNT 一样。。。。。不过既然你对 C++ 也不熟,学 C++ 起码半年,我也就不推荐了,

你是不是没听说过一个叫 Cordova 的东西?

当然我也不推荐 Electron. 因为他这边涉及音频处理, 必定涉及到大量内存数据运算. 而 Node 在这方面是很弱的. 效率也非常差. 一般像他这种都是 C++ 做算法, 前端套个漂亮的界面来实现相关的功能. 但是既然楼主对 C++ 也不了解,那这种方式显然也不是最优解。

哦,看错了,楼主对 C++ 熟悉,既然熟悉那就 C++ 做算法,前端无论是用Cordova + Electron还是 Avalonia 都无所谓啊

网页套壳

会 C++的话,用 C#也会很容易上手的, 跨平台的话可以试试 Avalonia ,还可以 Aot 编译,性能接近原生了

bevy/egui/slint 都支持多平台了,但是功能都还比较弱,如果对 rust 比较熟悉可以考虑

我怎么感觉没有一个人回答到核心问题上面来,就是 OP 想的太多,做的太少,你什么应用需要跨这么多平台,腾讯都不敢这么玩,玩具应用先做自己熟悉,使用的平台就可以了,搞不好你自己写到一半没用户就放弃了,或是等你写完已经有更好的工具出现了,太多这种我要,我全要,却什么也没做的案例,nodepad++,人家只写了 Windows 平台,不是照样非常牛逼。

qt 在安卓上有个例子是 krita

哈哈 我也感觉 . 最好想清楚用什么 要做什么成本多大之后再开工.

跨平台是 Linux Windows Mac 这种跨,不是 PC 到移动这种跨。。。

是啊,不知道啊,有问题吗🤣我又不是做移动端的

那可以给你推荐一下. Cordova 可以把 H5 页面直接编译成 Android / IOS 应用. 启动速度快, 添加插件非常方便 (Java), 开发起来非常简单. 只要会 H5 就行.

但是据说 cordave 这玩意环境难整,而且坑多。以前我就知道可以做移动端,但不知道还能配合 electron 。

qt 其实也不是不行,Android 上的 kde 全家桶不就是 qt ,比如 elisa , elisa.kde.org/

emmm 其实我最近在研究这个。。可惜楼主没有前端技术栈,不然我觉得 react + nodejs-mobile + react-native-webview 应该是一个挺好的技术栈

quasar 有个网页套壳 可以打包 Electron 、Cordova 、Capacitor

真的是小工具的话,真的很建议用 web 开发,浏览器是最便捷的跨平台

我看微软核心库代码要用 rust 重构,是不是也可以跨平台呢

javafx Qt MAUI

啥意思?你是指的 rust 跨平台还是啥?通常意义上的跨平台就是 JIT ,首先编译到 runtime 私有码如( c#的 IL ,JAVA 字节码),然后开发各个平台的 runtime ,而业务产品开发者不用每个平台都编译一次。而 rust ,cpp 这一类 AOT 的需要每个平台都基于源码重新编译到目标平台 不算是目前大家说的跨平台。

可以读一下这个: apps.who.int/iris/bitstream/handle/10665/331901/9789240003910-chi.pdf