移动端开发选项

2023-05-10 17:39:34 +08:00
 tyzc

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

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

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

3821 次点击
所在节点    程序员
39 条回复
Chad0000
2023-05-11 13:19:23 +08:00
@ChrisFreeMan #12
因为喜欢 Angular 有幸四前年试过那个 NativeScript ,还写过 APP ,比较难用。Debug 工具不好,自定义组件困难,JS 与原生映射想法好但完全要自己琢磨和试错显得过于鸡肋。

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

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

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

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

https://capacitorjs.com/
nnegier
2023-05-11 22:55:48 +08:00
@debuggerx #16 flutter 是在原生层上面的一层转化,在怎么牛的开发用 flutter 都只能无限趋近原生,我不知道你是怎么得出能超越的
misaka20
2023-05-12 11:05:15 +08:00
哪有那么多 flutter 和 RN 大牛,还超越原生?
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
2023-05-13 00:41:10 +08:00
@debuggerx 那你有没有想过受限,你用原生写就已经受限于操作系统提供的 API 了,你现在再用 flutter ,受限加受限,我不知道你怎么可能超越原生,你单指了 flutter 的 UI 框架和操作系统原生的 UI 框架对比,你甚至拿了游戏引擎的 UI 框架和原生的对比,这个我没研究过不好说(貌似你也没研究过),我暂时不能谈论他们的优缺点,而且它支持那么多操作系统,我学 flutter 的时候都没有看到窗口的概念。它当然方便,热重载带来开发效率的提升,以及多端支持带来的省钱。但有好些事情你还是得老老实实用原生,还是得老老实实去解决原生的问题。另外我并不是原生主义,Flutter 我未来也会考虑用,但它的灵活性肯定不比原生,之前折腾过 Android ,暂时对谷歌有点信不过(具体在收权限导致大量别人辛苦写的软件直接报废、禁用反射导致要改下官方类属性都得复制下来再改)
Bijiabo
2023-05-19 15:47:19 +08:00
@nnegier 我认为 Flutter 最大的问题不是能否超越原生,而是这个方案压根就不应该成为一个实现方案的选择项。使用 Flutter 这个行为就好像写网页只用 Canvas 绘制所有内容一样奇葩。
nnegier
2023-05-20 13:14:52 +08:00
@Bijiabo 有道理,而且它的 View 不能随意嵌入原生中
tyzc
2023-06-01 09:08:06 +08:00
感谢各位,参考大家的讨论和身边朋友的沟通,最后选择是 swiftui + webview 来搞。
最主要是考虑体验,加上我们早期也只专注于 ios 市场,所以跨端对我们团队来说需求不高。
对于 Android 后面也只会考虑 RN ,因为身边的人做 react 挺多的,好找。
tyzc
2023-06-01 09:09:52 +08:00
如果熟悉 ios 开发找工作,可以私信联系。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938959

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX