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

2023 年了,跨平台技术怎么样了?

  •  
  •   hui9000 · Jun 28, 2023 · 14820 views
    This topic created in 1229 days ago, the information mentioned may be changed or developed.

    小弟问一下各位大佬,跨平台技术现在怎么样了? 公司有一个需求:两个设备,一个是 window 平台,一个是安卓平台,想选型一个跨平台的技术,节省成本; 1.其实我的了解夸平台技术长远看并不会节省多少成本,维护成本较高; 2.两个平台只会运行一个程序不会安装其他任何程序,就是要做的这个; 3.了解过 elctron ,但是打包安卓不行,好像得改很多东西,才能打包,容易出现平台运行的程序出现 bug ,也就是 win 没事,安卓不行的情况; 4.flutter 怎么样了,但是学习一门语言或者招聘确实现阶段成本较高,也不好招人(公司在二线城市) 5.补充一下会机器会连接一些设备

    小弟真心求各位大哥给点建议,应该怎么办;

    87 replies  •  2023-07-14 19:28:23 +08:00
    lsk569937453
    lsk569937453
    Jun 28, 2023
    1
    我记得没有技术能跨桌面端和移动端,flutter 桌面端存疑。
    yazinnnn
    yazinnnn
    Jun 28, 2023
    2
    compose-multiplatform
    支持的平台

    iOS (Alpha)
    Android (via Jetpack Compose)
    Desktop (Windows, MacOS, Linux)
    Web (Experimental)
    bayallen
    bayallen
    Jun 28, 2023 via iPhone
    3
    Windows 用 Electron ,安卓用 Flutter 。

    两个平台的差异性太大了,设计肯定不同,没必要用一套技术。
    liyang5945
    liyang5945
    Jun 28, 2023
    4
    qt 可以,你可以搜下 GPXSee 这个软件,桌面端和安卓都有,代码在 github 开源的
    dabbit
    dabbit
    Jun 28, 2023
    5
    flutter 在桌面端主要问题还是官方不支持多窗口,但是社区已经有库实现了,可以看看 Desktop_multi_window 。连外设的话不太了解,没做过相关业务
    Muniesa
    Muniesa
    Jun 28, 2023 via Android
    6
    flutter 的确可以,但是得看具体需要的插件跨不跨平台,另外就是在 Windows 上用触摸的 UI 会比较奇怪
    lujiaxing
    lujiaxing
    Jun 28, 2023
    7
    @lsk569937453
    Uno Platform ( https://platform.uno/)
    Open-source UI Platform for building single-codebase applications for Windows, iOS, Android, WebAssembly, macOS, and Linux

    Avalonia UI ( https://avaloniaui.net)
    Avalonia is a powerful framework that enables developers to create cross-platform application using .NET. It uses its own rendering engine to draw UI controls, ensuring consistent appearance and behavior across various platforms, including Windows, macOS, Linux, Android, iOS and WebAssembly

    Electron + Cordova ( https://cordova.apache.org)
    Mobile apps with HTML, CSS & JS
    Target multiple platforms with one code base
    Free and open source

    简直不要太多...
    sentinelK
    sentinelK
    Jun 28, 2023
    8
    主要问题在于说,windows PC 的操作逻辑以及同屏信息量与 Android 的操作习惯截然相反。
    如果两个端用不同的界面逻辑代码,只共用 IO 和业务部分的话,跨平台的意义是否还有这么大。

    如果抛去产品设计的问题,依然选择跨平台的话,flutter 是可以胜任的。
    jones2000
    jones2000
    Jun 28, 2023❤️10
    9
    web 页面套壳。
    shalingye
    shalingye
    Jun 28, 2023
    10
    electron 做过一点应用,感觉能跨平台的业务基本都是前端,不如就用 H5 解决了。如果要调用系统接口啥的,还是得根据不同平台重新开发。
    lbllol365
    lbllol365
    Jun 28, 2023
    11
    本职 Java 后端,在学 Flutter ,用它做了个 windows 平台的 demo ,flutter build windows 打出 release 包,双击 exe 运行,好多次都是在后台运行,不显示界面,得多点运行几次才行,搞得后台全是这个 demo 的进程。借楼问一下有没有懂的大佬
    dreasky
    dreasky
    Jun 28, 2023
    12
    flutter 现在桌面端也勉强可以 web 才是最省成本
    lujiaxing
    lujiaxing
    Jun 28, 2023
    13
    @shalingye 对. 其实 Pornhub 的方式是最最合适的.
    一个可以放在应用抽屉的快捷方式. 用户点击之后打开的是 chrome. 里面全 H5 展现, 只要网络速度够快完全用起来跟原生 APP 没有任何的区别.

    只不过大部分国内企业做 app 的根本目的并不是提供服务, 而是收集数据喂给自己的广告营销平台. 这点这种 H5 就完全没办法做了.
    qingting
    qingting
    Jun 28, 2023❤️1
    14
    @lbllol365

    flutter 引擎有 BUG , 在 runner 项目的 flutter_window.cpp 里面修改代码

    // 添加以下代码
    this->Show();

    // 注释以下代码
    // flutter_controller_->engine()->SetNextFrameCallback([&]() {
    // this->Show();
    // });
    lbllol365
    lbllol365
    Jun 28, 2023
    15
    @qingting 谢谢大佬,我去试试
    hui9000
    hui9000
    OP
    Jun 28, 2023
    16
    @dreasky web 的话没办法连接设备吧
    MIUIOS
    MIUIOS
    Jun 28, 2023❤️1
    17
    真正的跨平台:Chromium
    murmur
    murmur
    Jun 28, 2023
    18
    h5 才是王道,至少国内是这样,微信小程序体量爆杀各种跨端技术
    felix0liu
    felix0liu
    Jun 28, 2023❤️1
    19
    微软的 MAUI 框架,或者用 Unity 也可以,虽然 Unity 是用来开发游戏的,但是单纯用它的 UI 框架也可以当 APP 开发
    NoManPlay
    NoManPlay
    Jun 28, 2023❤️2
    20
    Tauri 可以关注一下,现在支持 WIndows+MacOS+Linux,2.0 的 Alpha 版本支持了 iOS 和 Android
    NoManPlay
    NoManPlay
    Jun 28, 2023
    21
    AaronLee01
    AaronLee01
    Jun 28, 2023
    23
    UI 设计之类的都不一样,可以用 KotlinMultiplatform 实现 Model 层 和 业务层 的跨平台,UI 层用各自的技术实现即可
    weilanwl
    weilanwl
    Jun 28, 2023❤️1
    24
    试试 pwa? 不知道实际业务场景允不允许? pwa 是成本最低的了。
    realpg
    realpg
    Jun 28, 2023❤️1
    25
    你要找的是不是:
    网页
    liuliuliuliu
    liuliuliuliu
    Jun 28, 2023❤️1
    26
    考虑下 avalonia , 可以看他们的 showcase
    https://avaloniaui.net/Showcase
    karott7
    karott7
    Jun 28, 2023
    27
    可以结合 #3 和 #9 的想法,写一套响应式 web ,然后用 electron 和 flutter 套壳
    AV1
    AV1
    Jun 28, 2023
    28
    固定设备的话,windows 平台用 electron ,android 平台用 webview 。
    这样可以共用 UI 交互部分,然后为各自平台开发底层部分。
    unclemcz
    unclemcz
    Jun 28, 2023 via Android
    29
    win 装一个安卓虚拟机。
    meteor957
    meteor957
    Jun 28, 2023
    30
    react-native
    debuggerx
    debuggerx
    Jun 28, 2023 via Android
    31
    我自己拿 flutter 做的小工具(远程系统性能监视器)可以在手机和电脑上完美运行使用,体验一致。
    技术上可行,关键看你要做的东西本身能不能同时适应移动端和桌面端
    UFc8704I4Bv63gy2
    UFc8704I4Bv63gy2
    Jun 28, 2023
    32
    @liyang5945 qt 要开源,商业授权非常昂贵,设计编码 qa 一起差不多又够一个程序员工资了,这仅限桌面和手机,嵌入式更贵,分发还要收钱
    可以选择给聪明的程序员加工资,让他们解决这个问题
    sunnysab
    sunnysab
    Jun 28, 2023
    33
    flutter 拿来跨端没什么问题,上手难度不高的,可以通过招 Java 骗进来再改学 dart (逃

    一种方式是像前面说的套壳 Webview ,但是移动应用平台(尤其苹果)不太喜欢开发者这么搞,太“动态”容易使他们审核机制失效。
    另一种是用原生的方案写 UI ,把逻辑放到动态链接库中,大部分软件是这样做的。
    israinbow
    israinbow
    Jun 28, 2023
    34
    安卓跨平台就没有好的方案, 开发维护一起火葬场, 最好的办法就是不夸写原生. 其他跨平台有邪派 tauri, 我全套 rust 写的 web 服务连 kernel 都能 OTA, OTG; 虽然安卓也支持 rust, 我技术验证过继续全套 rust 也未尝不可.

    坏处就是招不到人, 至于学习成本高, 计算机基础知识掌握牢固的我不信他一个月内写不明白 rust.
    rb6221
    rb6221
    Jun 28, 2023
    35
    你都跨 windows+安卓了,那只有 flutter 可用了。。。。
    iorilu
    iorilu
    Jun 28, 2023❤️2
    36
    我研究了一通, 反正桌面端用的 pyside6 , 其实就是 pyqt , 跨平台基本一套代码就够了, 可能有很小改动针对不同 os
    xiangyuecn
    xiangyuecn
    Jun 28, 2023
    37
    除了 UI 部分,其他的不存在什么真跨平台,还不得每个平台单独写适配业务的代码

    UI 完全可以用 h5 搞,简单省事,电脑、手机 分别适配写好本地接口,统一给 h5 撸
    9dP06m83vIV00l72
    9dP06m83vIV00l72
    Jun 28, 2023
    38
    复杂界面,桌面端和手机端真的无法共用,需要在界面层做平台适配,业务逻辑可以尝试共用;
    IDAEngine
    IDAEngine
    Jun 28, 2023
    39
    Jsbridge
    renmu
    renmu
    Jun 28, 2023 via Android
    40
    web 端 pc 和 h5 都要单独做两套,就别想着跨了
    darkengine
    darkengine
    Jun 28, 2023
    41
    要不做个在设备上运行的服务端,用 web 实现客户端
    x77
    x77
    Jun 28, 2023
    42
    刚好有个支持 Android 和 Windows 的 Flutter App ,不是推广,主要看看图,功能实现和 UI 都没问题。

    https://github.com/xinlake/privch-client-flutter
    Mithril
    Mithril
    Jun 28, 2023
    43
    简单的界面可以用 QT ,Avalonia 等等直接做,效果也还行。

    有复杂交互的最好还是直接套 Web ,你招个前端开发远比招个能用这些玩意做出来复杂控件的容易得多。
    flyqie
    flyqie
    Jun 28, 2023 via Android
    44
    移动端跟 PC 端做跨平台。。

    理论上 flutter 可以搞。

    实际上。。很麻烦,因为这俩平台操作逻辑完全是不一样的。
    duke807
    duke807
    Jun 28, 2023 via Android
    45
    先说你设备是什么接口,网络、usb 、串口?
    usb 的话,是 hid 、cdc 、usb 网络?
    qiwuzan123
    qiwuzan123
    Jun 28, 2023
    46
    没有这种的吧。。
    placeholder
    placeholder
    Jun 28, 2023
    47
    只有 win 和安卓的话建议还是分开独立开发,不要合在一起,

    如果跨平台是刚需的话,建议看看 .net MAUI 哈哈哈哈,不过学微软的东西总是怕突然砍
    ac169
    ac169
    Jun 28, 2023
    48
    @ferrum
    @liyang5945
    @dabbit
    @Muniesa
    @lbllol365
    @dreasky
    @debuggerx
    @sunnysab
    @israinbow
    @janus77
    @x77
    @Mithril
    @flyqie

    跨平台应用程序开发框架那家强? https://www.v2ex.com/t/952470 各位大老是否可以移步看看这个帖子,好不容易编辑提交了,发现这有一个相近的帖子!
    roundgis
    roundgis
    Jun 28, 2023 via Android
    49
    手機 pc 是兩種不同的操作方式
    Friday2333
    Friday2333
    Jun 28, 2023
    50
    quasar 了解下
    xylxAdai
    xylxAdai
    Jun 29, 2023
    51
    flutter 、electron 、qt 各类跨端我都详细用过,web 、android 、ios 、win 我都深入写过至少万行的代码。我的推荐是,直接上 webview 套壳,没有任何跨端方案比 web 更好。
    SolidZORO
    SolidZORO
    Jun 29, 2023 via iPhone
    52
    webview 套 pwa ,完美。跨任何端。如果需要小程序,用 taro 可获得 小程序+pwa 双赢。为什么是 pwa 不是 h5 ,因为 webview 套 pwa 加载速度基本是瞬间的,看不出 loading 。
    tool2d
    tool2d
    Jun 29, 2023
    53
    @murmur h5 算什么,opengl 才是王道。我就没看到过有哪一个平台不支持 opengl 的。
    dcsuibian
    dcsuibian
    Jun 29, 2023
    54
    我觉得 windows 和安卓,应该要的是响应式设计技术,这可就难了
    wellerman
    wellerman
    Jun 29, 2023
    55
    React Native
    zhennann
    zhennann
    Jun 29, 2023
    56
    到目前为止,只有 CabloyJS 全栈框架实现了真正意义的“一次开发,到处运行”的跨端跨平台理念。CabloyJS 内部实现了一套 pc=mobile+pad 的自适应布局机制,因此,只需一套代码,即可同时跨端 PC 和 Mobile ,并且 Mobile 端是接近原生体验。可以参见在线演示: https://cabloy.com/zh-cn/articles/demo-online2.html
    WildCat
    WildCat
    Jun 29, 2023
    57
    @dabbit Desktop_multi_window published 10 months ago

    个人建议还是 web view 。参考 Notion/Logseq/Obsidian 体验
    zjsxwc
    zjsxwc
    Jun 29, 2023 via Android
    58
    同一套 js 代码,套 electron 与 uniapp
    tiezlk443
    tiezlk443
    Jun 29, 2023 via Android
    59
    qt 写过,搬项目遇到个野指针,改了下就好了,正常跑,只了解过 electron ,感觉都是浏览器,内存占用有点大
    tsanie
    tsanie
    Jun 29, 2023❤️1
    60
    .NET MAUI
    dj721xHiAvbL11n0
    dj721xHiAvbL11n0
    Jun 29, 2023
    61
    就俩个平台用夸平台是不是有点,,,话说既然都夸平台了,为什么不去适配苹果?老板怎么想的
    Narcissu5
    Narcissu5
    Jun 29, 2023
    62
    elctron 。。。。。能不能把名词拼对。
    如果是 PC 之间或者移动平台之间跨还好说,问题 PC 和移动端之间,UI 组件交互方式都不相同,真没多少可以复用的地方

    @x2420390517 看第二点显然是专用设备,买台一万多的电脑就跑一个应用?硬件多半还是定制的,你觉得苹果会给你定制?
    yalin
    yalin
    Jun 29, 2023
    63
    各个大佬公司之间的战争
    p1gd0g
    p1gd0g
    Jun 29, 2023
    64
    unity [doge]
    VictorJing94
    VictorJing94
    Jun 29, 2023❤️1
    65
    .net...
    iOCZ
    iOCZ
    Jun 29, 2023
    66
    只是 UI 跨端而已,其他都需要 bridge native
    dudubaba
    dudubaba
    Jun 29, 2023
    67
    渲染层用 js ,然后套壳 html
    luoway
    luoway
    Jun 29, 2023
    68
    没有额外需求说明的话,最低成本方案是写 PC 、H5 两个页面
    有了非原生不可的需求再考虑 h5 套壳,还是跨平台框架原生开发
    DCELL
    DCELL
    Jun 29, 2023
    69
    记住:能用 JS 的解决的,最终都会被 JS 解决
    maoyikun
    maoyikun
    Jun 29, 2023
    70
    compose-multiplatform
    Ixizi
    Ixizi
    Jun 29, 2023
    71
    不得不推荐 OneKey Wallet 了,这个项目用 Electron + RN 实现了大部分平台的跨平台,并且开源
    https://github.com/OneKeyHQ/app-monorepo
    robo
    robo
    Jun 29, 2023
    72
    楼上好多人提到了 Electron ,最近了解到了 tauri ,想知道 Electron 和 tauri 那个比较好
    dj721xHiAvbL11n0
    dj721xHiAvbL11n0
    Jun 29, 2023
    73
    @Narcissu5 那有意思了,安卓你也去定制硬件是吧,然后自己去搞系统适配是吧。
    robo
    robo
    Jun 29, 2023
    74
    @robo 更正 72 楼,想知道 Electron 和 tauri 哪个比较好?
    lisongeee
    lisongeee
    Jun 29, 2023
    75
    compose-multiplatform 和 Electron 打包逻辑一样

    每个 compose-multiplatform Desktop App 都自带一个 jvm

    目前 compose-multiplatform 还不支持编译到 kotlin-native
    Bijiabo
    Bijiabo
    Jun 29, 2023
    76
    @robo 有复杂业务需求,想长期维护,精力有限的话选 Electron 。

    玩票性质、喜欢折腾,不在意投入产出比,接受随时重写或换框架,选 Tauri 。
    mmdsun
    mmdsun
    Jun 29, 2023
    77
    MAUI , 前身是 Xamarin 已经很多年了十分稳定一直保持更新:

    https://dotnet.microsoft.com/zh-cn/apps/maui
    mogg
    mogg
    Jun 29, 2023
    78
    @Bijiabo 复杂业务用跨平台 UI 框架是伪需求吧

    感觉比较合理的方式应该是 逻辑层用平台无关的技术(比如编译到 wasm ),UI 还是用原生

    说实话我感觉 跨平台带来的复杂度 已经比大部分业务逻辑的复杂度高了(
    DOOMS
    DOOMS
    Jun 29, 2023
    79
    qt 是可以的 但是开发成本肯定是大的

    浏览器那种前端打包也是可以,开发成本底。
    ryan4290
    ryan4290
    Jun 29, 2023
    80
    客户端已经死了,ok ?
    hui9000
    hui9000
    OP
    Jun 29, 2023
    81
    @x2420390517 是这样设备资金投入太多了,设备大概要好几千台,很大的一笔投入
    Bijiabo
    Bijiabo
    Jun 29, 2023
    82
    @mogg 那么我换个说法:如果有复杂业务、又要用跨平台 UI 框架,建议选择 Electron 。

    至于不用跨平台 UI 框架,可能不是楼主要讨论的问题啦
    SekiBetu
    SekiBetu
    Jun 30, 2023
    83
    electron 元年
    datafeng
    datafeng
    Jun 30, 2023
    84
    如果电脑同时开了几个 electron 打包的软件不得哭?
    hui9000
    hui9000
    OP
    Jul 7, 2023
    85
    @xylxAdai 大哥 这边经过多天考虑还是选择 electron
    1. 首先抛弃了安卓设备,只用 windows 设备;
    2.考虑到这边没有原生开发人员,招不到人,小地方
    3.这边主要担心是调取设备时的兼容性,electron 是否合适;
    hui9000
    hui9000
    OP
    Jul 14, 2023
    86
    @xylxAdai 您好能否提供联系方式 我这边可以付费进行指导开发
    xylxAdai
    xylxAdai
    Jul 14, 2023
    87
    @hui9000 #85 electron 挺好的啊,其实和 web 区别不大,和后端沟通好,注意一下把设备相关的封装成接口,后期真有需求,转安卓、ios 的 web 套壳也很简单,electron 的平台层还帮你写了很多东西,不需要和纯 webview 一样麻烦。指导就算啦,我就一普通客户端开发。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1652 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 144ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
    ♥ Do have faith in what you're doing.