• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnnnnnamgn
V2EX  ›  程序员

打算自己做一个小工具,想能 Linux 、Win 和 Android 跨平台,但不清楚具体该用什么框架

  •  
  •   nnnnnnamgn · Feb 4, 2024 · 11893 views
    This topic created in 1004 days ago, the information mentioned may be changed or developed.
    本人目前只有 C++、Python 的编程经验,比较熟悉 C++和相关技术;
    以下是最近在考虑的:
    qt:很熟悉,个人比较偏向,但 qt 在 Android 上好像并没有见到什么应用使用,是有什么坑吗?
    flutter:不太了解,但看着好像是性能更好的 electron ?
    electron:最流行的方案,但我并不怎么会 web 开发,js 、html 、css 也没怎么用过

    大伙们有什么建议吗?或者有什么推荐的?
    56 replies  •  2024-04-08 16:01:31 +08:00
    codehz
    codehz
    Feb 4, 2024
    1
    qt 在安卓其实也有用,不过都是写工业领域的东西(好像还有人移植了 libreoffice
    williamfzc
    williamfzc
    Feb 4, 2024❤️1
    2
    先看看你的工具关注的点有哪些(例如浏览器支持、性能、兼容性)
    再去拿需求、商业模型试套下几个框架看看能不能满足
    radiorz
    radiorz
    Feb 4, 2024
    3
    要跨桌面和移动端最好就是 flutter 。
    electron 都搞不了 android 。
    road0001
    road0001
    Feb 4, 2024
    4
    其实最方便的跨平台就是 web 了,而 electron 本身就是基于 web 的,所以使用 electron 是可行的。手机端没有 electron ,但你可以写一个只有 webview 的 app ,然后在里面加载你的页面。用这种方式写的工具,要注意安卓不能用 electron 提供的和系统交互的 API (比如文件系统相关的,比如 node 相关的),要在 app 里为你的工具写和系统交互的 API 。
    FakerLeung
    FakerLeung
    Feb 4, 2024
    5
    跨安卓直接否决了 electron 啊,为啥还有这个选项?
    andyskaura
    andyskaura
    Feb 4, 2024
    6
    具体是什么功能呢?与系统交互较深的应用要求跨端都很折磨
    monsterx2a
    monsterx2a
    Feb 4, 2024
    7
    maui blazor 考虑下
    djnwzs
    djnwzs
    Feb 4, 2024
    8
    qt 或者 flutter ,其他不推荐
    hez2010
    hez2010
    Feb 4, 2024
    9
    又跨移动端又跨桌面端的话可以试试 Avalonia 。
    wjfz
    wjfz
    Feb 4, 2024
    10
    微信小程序。
    90xchun
    90xchun
    Feb 4, 2024
    11
    我觉得 web 跨端最好了,而且学习成本低,更新也快。要不你跳出 cs 模式的软件,搞搞 bs 得,有浏览器就能用
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    12
    @codehz 谢谢,这下否决 qt 了(
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    13
    @FakerLeung 这样嘛,总是听到移动端很多 app 是 web 套壳,就以为 electron 也可以用了(😂
    qcbf111
    qcbf111
    Feb 4, 2024
    14
    你们都忽略 c#呢?堪称最强跨平台语言,从十多年前暴雪就用 c#做跨平台游戏,到现在做的原神 android ,ios ,windows ,mac ,web ,甚至 ps ,xbox ,switch 都跨,而且性能强悍,算是最强性能跨平台语言之一吧。当然了 这是得益于 unity 因此哪怕不是游戏,但凡做 3D APP 都是最佳选择高性能且轻巧(相对 qq 自带虚幻),如果做传统静态 2D APP 或许不是个好选择。
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    15
    @wjfz 应该不适合,用小程序可能要阉割功能了
    mumbler
    mumbler
    Feb 4, 2024
    16
    熟悉 C++,当然是 c++ builder 啊,用 firemonkey 框架通杀 linux,win,android,ios 平台

    桌面应用开发 delphi/c++ builder 一直是王者
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    17
    具体功能涉及大量音频处理,除此之外没有什么需要大量计算的地方,会在本地运行用于处理音频的模型;不过我并不是很了解安卓开发,但是还想折腾下用用 npu ,不知道靠谱不靠谱?
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    18
    @90xchun 是有在考虑
    kneo
    kneo
    Feb 4, 2024 via Android
    19
    移动端开发就 flutter 。桌面端优先就 qt 。
    qt 可以搞安卓,有些小坑,我之前听说本地文件打开框有点什么如果你不熟悉。
    Haku
    Haku
    Feb 4, 2024
    20
    建议 python 开发后端,自己搞个网页。
    前端可以让 chatgpt 写,我自己就用这个写了个可以用来处理音频的工具,也是 0 前端经验。
    有兴趣可以看下。
    https://aicosers.com/
    Jamy
    Jamy
    Feb 4, 2024
    21
    c++ 的话 cocos2d 了解下
    Haku
    Haku
    Feb 4, 2024
    22
    @Haku 才发现你也是音频工具,不过我这边是处理过程放到了服务器上进行,异步处理后发送到用户提供的邮箱。总之前端这块 chatgpt 其实可以代劳很多了,自己随便看看代码进行修改下就可以拿来用。
    BORBER
    BORBER
    Feb 4, 2024
    23
    tauri 最近 beta 出了 支持 win linux mac Android ios
    joyanhui
    joyanhui
    Feb 4, 2024
    24
    你要跨桌面和移动 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 有一些阴间,需要点时间适应。
    joyanhui
    joyanhui
    Feb 4, 2024
    25
    补一条 pc 端的菜单实现 flutter 弄也有点坑。
    heora
    heora
    Feb 4, 2024
    26
    @bluearc electron 本质还是使用的 html/css ,只要你做好配置,完全可以编译出两套代码,适合 pc 和 客户端的。当然 pc 功能要阉割掉调用原生能力的内容。
    ExplodingDragon
    ExplodingDragon
    Feb 4, 2024❤️1
    27
    来个不那么正常的 :

    Kotlin Multiplatform

    这个不符合楼主的技术栈,但确实是三端支持
    moooxin
    moooxin
    Feb 4, 2024
    28
    不要吧桌面和移动端。用一个给跨了。
    走不通的
    sakuragiit
    sakuragiit
    Feb 4, 2024
    29
    flutter 吧
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    30
    @Haku #22 我这个没有用户,自己弄着玩的,所以要本地处理😶‍🌫️
    nnnnnnamgn
    nnnnnnamgn
    OP
    Feb 4, 2024
    31
    @joyanhui #24 谢谢您写这么多,基本上是打算用 flutter 了🙇‍
    GreatLiXin
    GreatLiXin
    Feb 4, 2024
    32
    react/electron+reactNative?
    lwjlol
    lwjlol
    Feb 4, 2024
    33
    https://github.com/gskinnerTeam/flutter-wonderous-app 这是 flutter 的 showcase , mac windows android mac
    lujiaxing
    lujiaxing
    Feb 4, 2024 via Android
    34
    @bluearc 啊,那涉及到音频处理的话,那可能就只能推荐 Avalonia 了。。能做高效数据处理,能跨端跨平台,开发简单,就只有这一个选择。

    js 处理音频比较扯.

    不过也可以 C++ 负责处理音频,提供接口给 electron / cordova 调用。跟 QQNT 一样。。。。。不过既然你对 C++ 也不熟,学 C++ 起码半年,我也就不推荐了,
    lujiaxing
    lujiaxing
    Feb 4, 2024 via Android
    35
    @FakerLeung 你是不是没听说过一个叫 Cordova 的东西?
    lujiaxing
    lujiaxing
    Feb 4, 2024 via Android
    36
    @FakerLeung 当然我也不推荐 Electron. 因为他这边涉及音频处理, 必定涉及到大量内存数据运算. 而 Node 在这方面是很弱的. 效率也非常差. 一般像他这种都是 C++ 做算法, 前端套个漂亮的界面来实现相关的功能. 但是既然楼主对 C++ 也不了解,那这种方式显然也不是最优解。
    lujiaxing
    lujiaxing
    Feb 4, 2024 via Android
    37
    哦,看错了,楼主对 C++ 熟悉,既然熟悉那就 C++ 做算法,前端无论是用
    Cordova + Electron
    还是 Avalonia 都无所谓啊
    Bologna
    Bologna
    Feb 4, 2024
    38
    网页套壳
    beginor
    beginor
    Feb 4, 2024 via Android
    39
    会 C++的话,用 C#也会很容易上手的, 跨平台的话可以试试 Avalonia ,还可以 Aot 编译,性能接近原生了
    KagurazakaNyaa
    KagurazakaNyaa
    Feb 4, 2024
    40
    bevy/egui/slint 都支持多平台了,但是功能都还比较弱,如果对 rust 比较熟悉可以考虑
    Nosub
    Nosub
    Feb 4, 2024 via iPhone❤️1
    41
    我怎么感觉没有一个人回答到核心问题上面来,就是 OP 想的太多,做的太少,你什么应用需要跨这么多平台,腾讯都不敢这么玩,玩具应用先做自己熟悉,使用的平台就可以了,搞不好你自己写到一半没用户就放弃了,或是等你写完已经有更好的工具出现了,太多这种我要,我全要,却什么也没做的案例,nodepad++,人家只写了 Windows 平台,不是照样非常牛逼。
    zim298247
    zim298247
    Feb 4, 2024
    42
    @codehz qt 在安卓上有个例子是 krita
    changdy
    changdy
    Feb 4, 2024
    43
    @Nosub 哈哈 我也感觉 . 最好想清楚用什么 要做什么成本多大之后再开工.
    roycestevie6761
    roycestevie6761
    Feb 4, 2024
    44
    跨平台是 Linux Windows Mac 这种跨,不是 PC 到移动这种跨。。。
    FakerLeung
    FakerLeung
    Feb 4, 2024
    45
    @lujiaxing 是啊,不知道啊,有问题吗🤣我又不是做移动端的
    lujiaxing
    lujiaxing
    Feb 4, 2024
    46
    @FakerLeung 那可以给你推荐一下. Cordova 可以把 H5 页面直接编译成 Android / IOS 应用. 启动速度快, 添加插件非常方便 (Java), 开发起来非常简单. 只要会 H5 就行.
    FakerLeung
    FakerLeung
    Feb 4, 2024
    47
    @lujiaxing 但是据说 cordave 这玩意环境难整,而且坑多。以前我就知道可以做移动端,但不知道还能配合 electron 。
    1una0bserver
    1una0bserver
    Feb 5, 2024 via Android
    48
    qt 其实也不是不行,Android 上的 kde 全家桶不就是 qt ,比如 elisa ,https://elisa.kde.org/
    anoninz
    anoninz
    Feb 5, 2024
    49
    emmm 其实我最近在研究这个。。
    可惜楼主没有前端技术栈,不然我觉得 react + nodejs-mobile + react-native-webview 应该是一个挺好的技术栈
    yangzzzzzz
    yangzzzzzz
    Feb 5, 2024
    50
    quasar 有个网页套壳 可以打包 Electron 、Cordova 、Capacitor
    maemolee
    maemolee
    Feb 5, 2024
    51
    真的是小工具的话,真的很建议用 web 开发,浏览器是最便捷的跨平台
    Paranoid1119
    Paranoid1119
    Feb 6, 2024
    52
    @qcbf111 我看微软核心库代码要用 rust 重构,是不是也可以跨平台呢
    VeteranCat
    VeteranCat
    Feb 6, 2024
    53
    javafx Qt MAUI
    qcbf111
    qcbf111
    Feb 6, 2024
    54
    @Paranoid1119 啥意思?你是指的 rust 跨平台还是啥?
    通常意义上的跨平台就是 JIT ,首先编译到 runtime 私有码如( c#的 IL ,JAVA 字节码),然后开发各个平台的 runtime ,而业务产品开发者不用每个平台都编译一次。而 rust ,cpp 这一类 AOT 的需要每个平台都基于源码重新编译到目标平台 不算是目前大家说的跨平台。
    laters
    laters
    Apr 8, 2024
    56
    flutter
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1330 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    ♥ Do have faith in what you're doing.