应该选择哪种跨平台方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cokey
V2EX    Android

应该选择哪种跨平台方案

  •  
  •   cokey 345 天前 9388 次点击
    这是一个创建于 345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备开发一个新软件,覆盖的平台包括:Android 、iOS 、鸿蒙 Next 、Windows

    是 Flutter 、RN 、KMP+Compose ,还是其他方案。

    之前倾向于 Flutter 但是感觉 Google 越来越不重视 Flutter ,未来的前途存疑,所以现在倾向于 RN

    34 条回复    2025-01-21 17:30:57 +08:00
    wakarimasen
        1
    wakarimasen  
       345 天前
    也是月经贴了。
    首先,很多应用是可以套 Web 的,且建议优先考虑。不要矫情不要有技术洁癖,现在的用户有百兆光纤和 2T 硬盘真不差你那点。然后,复杂的交互没办法跨端的,有些在桌面上常见的操作,移动端是没有的,反之亦然,如果涉及到这方面建议桌面端单开。一定要在这三个挑就 RN ,相比另外两个也算是身经百战了。
    uqf0663
        2
    uqf0663  
       345 天前
    虽然 V2 不待见 uniapp ,但是如果是我,果断选择 uniappx ,直接全支持了移动端,插件市场有插件来实现 PC 端。
    AvilCore
        3
    AvilCore  
       345 天前 via Android
    其实就是你会什么就用什么
    所有系的 web+mobile 都是依托答辩,flutter
    web rnweb 都是臭狗屎,最好就是分开做或者全部 h5 套壳
    你不厌恶 js 那就是 react 系列最好 可以学 dart 就 flutter
    AoEiuV020JP
        4
    AoEiuV020JP  
       345 天前
    我选择 flutter ,
    主要是厌恶 js 系,
    kotlin 那个,总觉得还差几年,
    twig
        5
    twig  
       345 天前 via iPhone
    刚隔壁楼看到一个东西叫 avalonia ui ,看起来挺不错
    AV1
        6
    AV1  
       345 天前
    我是用户,我希望别用跨平台框架,每个平台都用各自的 native 工具链造轮子,性能最好。
    我是开发者,我希望 H5 webview 一把梭,早收工早下班,用户体验哪有我头皮重要?
    R4rvZ6agNVWr56V0
        7
    R4rvZ6agNVWr56V0  
       345 天前
    在于你个人对特定技术栈的好恶了。我是希望 RN 开发者社群更加大,哈哈哈,因为我喜欢 React
    XCFOX
        8
    XCFOX  
       345 天前   6
    React 的思路和 Flutter 非常不一样。
    React 有一层虚拟 DOM ,目前 React 的虚拟 DOM 适配了 web(react-dom)、iOS | Android (React Native)、windows (react-native-windows) 还有社区维护的 tvOS 、Skia ,甚至 React 还能直接渲染到视频 ( https://www.remotion.dev/) 。按理说要是 Flutter 的 Impeller 性能出色的话,React 再适配到 Impeller 也完全可行。
    而 Flutter 想做的是跨平台的图形界面的渲染引擎。Flutter 的界面是完全自绘的,这意味着放着完善的 ios/android 生态不用,全部都另起炉灶。这当然是值得鼓励的,但是谷歌给到 Flutter 的支持显然不如 Apple 给到 iOS 的,也不如谷歌自己给到 Android 的,于是 Flutter 在体验上始终与原生 APP 存在差距,尤其是高帧率逐渐普及之后,Flutter 不得不放弃 Skia 自研 Impeller 。

    新出炉的 React Native 0.76 默认启用了新架构,性能大幅提升,再加上 hermes 引擎,js 的执行速度早就不是瓶颈。

    而 Flutter 好像越来越不受 Google 重视了( t/1084590 ) ,之前提到的全新 Impeller 引擎还没有完成 ( https://github.com/orgs/flutter/projects/21 ) ,期待 Impeller 能够拉近 Flutter 与原生的差距。

    我个人体验下来 React Native 的流畅度是显著好于 Flutter 的,React Native 在动画表现上确实 Native 。Flutter 写的页面一滑动就知道是 Flutter 写的(看惯了 120 hz 再看 60hz 肉眼可见掉帧)。

    可以体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
    https://github.com/guozhigq/flutter_v2ex
    https://github.com/liaoliao666/v2ex
    Danmen123
        9
    Danmen123  
       345 天前
    看你自己的技术栈,哪个做起来快就用哪个。
    musi
        10
    musi  
       345 天前 via iPhone
    统一 webview 套壳就行了
    也别上 RN 了,RN 可以不维护,webview 一定会始终存在的
    cowcomic
        11
    cowcomic  
       345 天前
    就我们的项目经验
    H5 和 Flutter 都挺好
    大部分场景 H5 都能搞定,对于一些跟手体验要求很严格的场景,可以用 Flutter
    wobuhuicode
        12
    wobuhuicode  
       344 天前
    react native 要优化好是可以的。后期招多两个原生来做原生组件给 RN 用。
    但是 Flutter 的话就要招会底层图形渲染的高手来优化了
    debuggerx
        13
    debuggerx  
       344 天前
    未来是指多远的未来?
    我去年就说过,哪怕 Flutter 立即失去所有支持停止开发维护,其优势地位也至少能保持 5 年左右。
    如果是刚入行(坑)的新人,可以多对比对比自己判断,否则大概率职业生涯结束了 flutter 也还活着。
    RightHand
        14
    RightHand  
       344 天前 via Android
    还是那句话,对自己的,有追求的就原生、flutter 。如果是给别人,快速实现那就 web 、uniapp
    youngce
        15
    youngce  
       344 天前
    项目快到 deadline:uniapp 真香。
    GlobalNPC
        16
    GlobalNPC  
       344 天前
    反正别用微软的轮子,会不幸
    mtjgu
        17
    mtjgu  
       344 天前
    Flutter 和 React Native 都可以。React Native 的心智负担较低,因为 js 帮你兜底。而 Flutter 在某些情况下需要额外的优化,但它的上限我觉的更高。ps:强烈建议不要使用 uni-app 进行跨端开发(个人观点 叠甲),这个框架存在许多问题。我曾经维护过一个 uni-app 项目,维护起来很吃力。例如,HBuilder 更新后可能导致打包出错,常常需要回退到之前的版本。
    chenxuuu
        18
    chenxuuu  
       344 天前
    @twig 桌面端可以用,移动端它靠的还是 xamarin 那套,我测下来挺卡的
    另外它不可能兼容鸿蒙 next
    dford
        19
    dford  
       344 天前
    Qt 支持你说的 4 种平台
    Parva
        20
    Parva  
       344 天前
    Tauri
    NewTab12138
        21
    NewTab12138  
       344 天前
    你要支持鸿蒙,那就只能 uniapp
    NewTab12138
        22
    NewTab12138  
       344 天前
    以为国外的平台不可能支持鸿蒙
    abc1310054026
        23
    abc1310054026  
       344 天前   1
    别的没用过,uniapp 我真用过。

    依赖得去插件市场找能不能找到你想要的只能看运气,插件并不是官方维护的,所以接口是否统一,使用方式是否一致也得看运气。文档缺这缺那,HBuilder 只能当启动器。

    uniapp 就像是粪海中的一朵小白花,花上写着跨平台,除此之外的东西都在海里。无数程序员被这朵花吸引,却失足掉进海里,满脸满口被糊上大粪。

    为什么文档上有这么多东西,但我却什么都找不到?千言万语说不出,呜呜呜呜 呜呜呜。
    Kieran
        24
    Kieran  
       344 天前
    我来推荐个 capacitorjs ,目前用了两年多了,使用良好,App 在各个应用商店都上架了,主流功能都能支持,开发成本等。
    TheBlind
        25
    TheBlind  
       344 天前   1
    tauri 2 ,我觉的不错。用的 webview ,比较简单。现在 tauri 2 支持安卓了。

    我用 tauri 写了终端工具,https://www.tshell.online/
    jeesk
        26
    jeesk  
       344 天前
    首先肯定是 flutter , 官方都放弃了,
    jeesk
        27
    jeesk  
       344 天前
    @Kieran 这个和 uniapp 是一个路子呢.
    SmiteChow
        28
    SmiteChow  
       344 天前
    你别管,老板说哪个就是哪个,老板如果让你自己定,说明老板想快速看到成效,那就 RNJS 一把梭。
    Kieran
        29
    Kieran  
       344 天前
    @jeesk #27 不太一样,这个套壳 h5 ,配合一些插件实现一些原生功能,插件比较丰富,也不局限在 vue ,可以用 react
    shebaoting
        30
    shebaoting  
       344 天前 via iPhone
    @XCFOX 第二个链接,我看里面说的是原生开发哈。我用手机浏览的 github ,可能也是我没看清楚?
    sir283
        31
    sir283  
       344 天前
    自己做,随便用哪个。
    公司做,看公司性质,如果是小公司赶进度,你又恰好只会前端跟部分 Java ,用 react native 就行了。如果不赶进度,还要求你要在低配置设备上跑,用原生最好,然后就是 qt 、c#这种。
    cokey
        32
    cokey  
    OP
       344 天前
    @NewTab12138 flutter 和 rn 现在都支持鸿蒙
    vectorization
        33
    vectorization  
       263 天前
    大部分团队只实现了跨平台开发节省人力,但是动态化和持续部署受限于团队规模,没有精力持续投入,这块可以看看成熟的大厂解决方案。

    1. 动态化:
    Flutter 是可以跨平台的,但是没有官方的动态化方案,业界动态化方案很多,但是基本处于自用,对外只有宣传 PR 的效果,腾讯有个 conch 的高性能动态化方案,应该是市面上屈指可数的基于虚拟机指令的动态化方案。
    https://shiply.tds.qq.com/docs/doc?id=4012359582

    2. 持续部署:
    动态化的下一步就是实现持续部署,也叫热更新。这需要一个强大的客户端资源发布平台,市面上几乎没有选择,腾讯的 Shiply 平台对跨平台产物热发布支持的不错,能够差量更新和灰度发布。
    vectorization
        34
    vectorization  
       263 天前
    @vectorization 补充一个平台链接: https://shiply.tds.qq.com/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2182 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:42 PVG 08:42 LAX 17:42 JFK 20:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86