V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tyzc
V2EX  ›  程序员

移动端开发选项

  •  
  •   tyzc · 2023-05-10 17:39:34 +08:00 · 3870 次点击
    这是一个创建于 592 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 海外市场,产品类似于 AI 机器人,核心功能就是对话+一些小游戏。半年内业务会专注于 ios 的市场。

    技术选型 目前看基于 flutter 和 RN 多端技术,v2ex 中大概对半支持 2 个技术。

    想咨询下基于上述业务场景,是选用 flutter 、RN 或者 ios 原生呢?

    第 1 条附言  ·  2023-05-10 22:02:44 +08:00
    产品上可能涉及的一些东西
    1 通用的表单和页面渲染
    2. 麦克风录音、语音播放
    3. 相机
    4. 地图

    想知道 RN 或者 Flutter 对这些技术的支持如何。
    第 2 条附言  ·  2023-05-11 10:54:37 +08:00
    和朋友的创业项目,薪资 /待遇能保障。
    相关团队成员都已就绪,现在在找移动端开发负责人。
    如有对 AI 感兴趣,熟悉移动端开发的,可以私聊。最好是熟悉 ios 了。
    39 条回复    2023-06-01 09:09:52 +08:00
    Leonard
        1
    Leonard  
       2023-05-10 17:41:10 +08:00
    如果是专注 iOS 的市场,那是基于什么考虑 flutter 和 RN 的呢?
    MarsCloud
        2
    MarsCloud  
       2023-05-10 18:10:30 +08:00
    @Leonard #1 半年内专注 iOS ,可能后续会新增 Android 市场吧。 这样子后面做下兼容就可以直接打 android 版本就行 🐶。
    MarsCloud
        3
    MarsCloud  
       2023-05-10 18:12:00 +08:00
    @tyzc 没做过小游戏,所以想问下,如果做小游戏的话,是不是会用到 cocos 或者 Unity3D ;如果需要用到的话,那么 flutter 或者 rn 对这两个的支持是不是需要考虑一下?
    okakuyang
        4
    okakuyang  
       2023-05-10 19:23:42 +08:00
    要看你核心载体是什么,flutter ,RN 这些做通用页面很快,表单,列表 。除此之外很多坑。
    wjx0912
        5
    wjx0912  
       2023-05-10 19:31:37 +08:00
    uniapp 也是一种选择
    tyzc
        6
    tyzc  
    OP
       2023-05-10 21:59:27 +08:00
    @MarsCloud 是的。
    后面会考虑 Android 市场的。
    tyzc
        7
    tyzc  
    OP
       2023-05-10 22:00:46 +08:00
    @okakuyang
    嗯,这个核心还是对话。应该还涉及到录音,相机、地图类的事情。
    tyzc
        8
    tyzc  
    OP
       2023-05-10 23:06:25 +08:00
    @MarsCloud 不会这么复杂。
    大概率是一些 h5 方面的小游戏。
    sylvesteryao
        9
    sylvesteryao  
       2023-05-10 23:52:15 +08:00 via Android
    省事 Flutter ,追求体验就双原生。
    vivipure
        10
    vivipure  
       2023-05-11 00:17:46 +08:00
    都可以,就是别用 uniapp ,调用原生 SDK 特别麻烦。官方提供的 SDK 竟然要用百度云进行下载,无敌!
    Bijiabo
        11
    Bijiabo  
       2023-05-11 00:59:44 +08:00
    附言中涉及的需求用原生做体验会最好、自由度也高,考虑到这对原生组件的支持友好性、投入产出比,推荐 RN 。

    如果前期希望专注 iOS 市场,考虑体验的话,Flutter 是最糟的选择。
    debuggerx
        12
    debuggerx  
       2023-05-11 06:30:00 +08:00 via Android
    看能力,招个 flutter 大牛或者 rn 大牛,开发效率和产品体验都能追平甚至超越原生
    ChrisFreeMan
        13
    ChrisFreeMan  
       2023-05-11 08:57:21 +08:00
    有人用过另一个 js 的移动端开发框架 NativeScript 做过产品吗? 好奇体验咋样。现在的前端 all in Facebook 风险有点太大。
    nnegier
        14
    nnegier  
       2023-05-11 09:19:53 +08:00 via Android
    @debuggerx 超越不能,可以无限趋近
    tyzc
        15
    tyzc  
    OP
       2023-05-11 09:29:36 +08:00
    @Bijiabo 感谢。
    debuggerx
        16
    debuggerx  
       2023-05-11 09:54:22 +08:00
    @nnegier 只要水平够高是可以的 原生也有原生自己的不足
    kuaner
        17
    kuaner  
       2023-05-11 10:06:53 +08:00
    flutter 慎重,性能比原生还是差距明显
    Ashore
        18
    Ashore  
       2023-05-11 10:13:08 +08:00
    @vivipure 确实 对于没有会员的人来说简直就是一种折磨,用蓝奏云逗比百度云好
    janus77
        19
    janus77  
       2023-05-11 11:03:34 +08:00
    这些都没什么大问题,二者都可以胜任。RN 更成熟,flutter 就是最近比较火,但是在国外我也不知道到底能不能跟 RN 抗衡
    huihuibisheng
        20
    huihuibisheng  
       2023-05-11 13:10:57 +08:00
    可以思考几个问题:
    1. 总的开发量是否足够多。跨平台能提效的前提是,总的开发量足够多且大部分是对性能不敏感的页面。
    2. 招人是否好招。有一个可能性是你招到一个高手,他最熟悉某个技术栈。
    3. 性能和体验是否重要。

    其实在创业初期,先尽快找到人开发出 MVP 才是王道(当然得保证选型不要太偏,至少能保证半年到一年的使用),然后后面再考虑中长期的技术选型,慢慢做改版。
    Chad0000
        21
    Chad0000  
       2023-05-11 13:19:23 +08:00   ❤️ 1
    @ChrisFreeMan #12
    因为喜欢 Angular 有幸四前年试过那个 NativeScript ,还写过 APP ,比较难用。Debug 工具不好,自定义组件困难,JS 与原生映射想法好但完全要自己琢磨和试错显得过于鸡肋。

    作为一个主 C#的程序员,我最终还是使用 Xarmarin 做 APP 了。
    aaronzhang404
        22
    aaronzhang404  
       2023-05-11 13:47:15 +08:00
    flutter 官方对 webview 的支持不友好,如果使用 h5 做小游戏的话,建议先 iOS 原生,半年后有起色再说。
    aaronzhang404
        23
    aaronzhang404  
       2023-05-11 13:51:02 +08:00
    不要用 uniapp
    RightHand
        24
    RightHand  
       2023-05-11 14:12:25 +08:00 via Android
    你这里太多需要与硬件打交道的了,用原生吧。否则都得用桥,质量效率难保证
    raykle
        25
    raykle  
       2023-05-11 14:19:46 +08:00
    首先排除 uniapp !

    Flutter 不是很了解,但是 RN 对类似 IM 对话这种性能上的支持不太行,对话数量多了就会出现卡顿、白屏等问题,当然社区也有一些解决方案...

    所以求稳的话,建议原生。
    jsq2627
        26
    jsq2627  
       2023-05-11 14:26:46 +08:00
    想起三年前开发 RN 的一个聊天模块,被 ScrollView 恶心到了,因为聊天列表是双向加载,必须要到的选项 maintainVisibleContentPosition 只有 iOS 支持,Android 不支持。
    issue 和 PR 都有人提,但是直到前两天,PR 才终于被合并,在马上要发布的 0.72 解决。
    --
    即便这样,RN 依然是现今最成熟的跨平台移动端框架。
    kennir
        27
    kennir  
       2023-05-11 14:30:46 +08:00
    flutter 做过好几个应用了,现在基本上也没什么大坑了,到现在只有一个问题绕不过去(广点通的 SDK 里的信息流广告曝光失败)

    flutter 撸界面比 iOS 那个傻乎乎的 storyboard 舒服多了,vscode 也比 Xcode 不知道高多少档了,再加个 copilot 可以帮你节约很多时间
    nenseso
        28
    nenseso  
       2023-05-11 15:03:36 +08:00
    如果和原生桥接较多并且暂时专注于 iOS 的话可以使用 iOS 原生
    nicevar
        29
    nicevar  
       2023-05-11 15:05:46 +08:00
    产品功能不复杂与系统结合相关的东西不多,Flutter 和 RN 都行,否则别说技术大牛,天皇老子来了我都不信,说接近原生都是扯,你看现在大公司用这类做的 APP ,开发人员整天写文章在技术社区上各种吹嘘,提的 bug 四五年都不修复的。
    Liang1124
        30
    Liang1124  
       2023-05-11 16:28:59 +08:00
    建议还是 RN 吧,人好找,开发快,对应的录音、相机、地图都有能用的第三方原生库。如果以后考虑极致的用户体验,再换成原生也不迟。
    roundgis
        31
    roundgis  
       2023-05-11 20:45:06 +08:00 via Android
    @Chad0000 現在多了 這個

    https://capacitorjs.com/
    nnegier
        32
    nnegier  
       2023-05-11 22:55:48 +08:00 via Android
    @debuggerx #16 flutter 是在原生层上面的一层转化,在怎么牛的开发用 flutter 都只能无限趋近原生,我不知道你是怎么得出能超越的
    misaka20
        33
    misaka20  
       2023-05-12 11:05:15 +08:00
    哪有那么多 flutter 和 RN 大牛,还超越原生?
    debuggerx
        34
    debuggerx  
       2023-05-12 11:40:57 +08:00
    @nnegier 首先开发效率方面,这个不用多说了吧,现代化的前端框架已经证明了数据驱动模式的开发效率远超事件驱动+手动修改页面的模式

    而对于运行效率,这个就很深了,您的这句“flutter 是在原生层上面的一层转化,在怎么牛的开发用 flutter 都只能无限趋近原生”从原因到结论我都觉得有一定问题。

    先说“flutter 是在原生层上面的一层转化”这点,这句话我认为对、也不完全对。因为 flutter 没有用原生的 UI 组件及系统,而只是利用了原生创建一个 View 或者说画布,其他的绘图和渲染逻辑几乎都是自己实现,所以它的运行效率是完全有可能高于原生方式开发的 UI 界面。打个比方,假设现在的手机的绘图性能是 100 点,原生提供的 UISDK 的效率是 80 点(不要以为系统 sdk 的实现就是最高效的),那么如果是绕过 UISDK 的限制,直接调用系统绘图,那么完全是可以超过 80 点的,就好比用 UISDK 去做游戏,相比于 Unity 等引擎,都不用比效率,可能做都做不出来。虽然拿游戏和传统 APP 比可能不太合适,但是 flutter 的模式本质上就是更接近游戏引擎。

    再来,即使是基于原生组件的方案,比如 RN ,我觉得在一定程度上也是可以实现超过原生的体验的。打个比方,为什么现在的前端框架都敢说自己的效率比传统模式快,其中一个原因就是各家几乎都有自己的 diff 算法可以提高效率,所以在上层通过一定的手段和方法进行优化,实现超过直接编写原生代码的效果在某些情况下也是可能的。

    最后就是限定词“大牛”,水平足够高的时候会懂得利用各种方法方式来解决问题的,比如同样一个算法问题,牛人可能用 python 写,都比普通人用 c 写出的效率高速度快。举几个例子,同样是处理比较多的数据,水平一般的可能就直接全量处理然后造成卡顿,高手可能随手就用异步、子线程、分帧、过渡动画、预处理等等手段,将体验优化得非常好
    nnegier
        35
    nnegier  
       2023-05-13 00:41:10 +08:00 via Android
    @debuggerx 那你有没有想过受限,你用原生写就已经受限于操作系统提供的 API 了,你现在再用 flutter ,受限加受限,我不知道你怎么可能超越原生,你单指了 flutter 的 UI 框架和操作系统原生的 UI 框架对比,你甚至拿了游戏引擎的 UI 框架和原生的对比,这个我没研究过不好说(貌似你也没研究过),我暂时不能谈论他们的优缺点,而且它支持那么多操作系统,我学 flutter 的时候都没有看到窗口的概念。它当然方便,热重载带来开发效率的提升,以及多端支持带来的省钱。但有好些事情你还是得老老实实用原生,还是得老老实实去解决原生的问题。另外我并不是原生主义,Flutter 我未来也会考虑用,但它的灵活性肯定不比原生,之前折腾过 Android ,暂时对谷歌有点信不过(具体在收权限导致大量别人辛苦写的软件直接报废、禁用反射导致要改下官方类属性都得复制下来再改)
    Bijiabo
        36
    Bijiabo  
       2023-05-19 15:47:19 +08:00
    @nnegier 我认为 Flutter 最大的问题不是能否超越原生,而是这个方案压根就不应该成为一个实现方案的选择项。使用 Flutter 这个行为就好像写网页只用 Canvas 绘制所有内容一样奇葩。
    nnegier
        37
    nnegier  
       2023-05-20 13:14:52 +08:00 via Android
    @Bijiabo 有道理,而且它的 View 不能随意嵌入原生中
    tyzc
        38
    tyzc  
    OP
       2023-06-01 09:08:06 +08:00
    感谢各位,参考大家的讨论和身边朋友的沟通,最后选择是 swiftui + webview 来搞。
    最主要是考虑体验,加上我们早期也只专注于 ios 市场,所以跨端对我们团队来说需求不高。
    对于 Android 后面也只会考虑 RN ,因为身边的人做 react 挺多的,好找。
    tyzc
        39
    tyzc  
    OP
       2023-06-01 09:09:52 +08:00
    如果熟悉 ios 开发找工作,可以私信联系。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5517 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 06:58 · PVG 14:58 · LAX 22:58 · JFK 01:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.