求助帖,做过跨端(iOS 和 Android)开发的看过来

2019-06-08 13:18:09 +08:00
 leconio

最近项目组要搞重构,之前只有 Android 端,现在的要求是 Android 和 iOS 都可以用。项目比较庞大,总代码行数在 30W+(包括 google 库),其中大部分代码是业务逻辑。项目是什么名字这里不方便说,总之是一个业务逻辑十分庞大的工具类 App,不涉及金融。 目前的跨端方案有大概几种:ReactNative、Weex、Flutter 以及 WebView 容器的 Hybrid。Hybrid 基本上可以直接否掉,App 对性能有一定的要求,所以大概只能在前面三者里面选。

首先:ReactNative 和 Weex 都使用 JavaScript 语言进行开发,这样就会有一个问题,弱类型语言在修改参数类型的时候,如果出错的话不会在编译时候报出来。由于项目比较庞大,每次发版不可能把每一个功能点都回归到。万一修改了一个参数类型,影响没有回归到的功能的话,就可能影响整个线上。那么 TypeScript 是否可以解决这个问题?

如果 TS 可以解决上面的问题,那么 ReactNative 和 Weex 的社区环境怎么样呢,ReactNative 有 20 多万的 userby,weex 只有 9 个。据说 weex 迁到了 Apache,可能有一定的影响。如果要选择,要考虑以下几点:

那么大家更倾向 ReactNative 还是 Weex 呢?

那么说说 Flutter: Flutter:Flutter 使用 Dart 语言构建,可以规避上面的问题。我个人更倾向于 Flutter,毕竟上面的坑已经趟的差不多了,除了热更新基本都可以实现。但是 Flutter 毕竟是个新鲜的产物,公司的架构委员会可能不会批准,但是回过头想想,Android 刚出世的时候还不是坑一大堆,毕竟社区活跃呀,坑多人更多呀,坑总要有人或者公司带头填,不过大环境下的架构师都会选择稳定(坐享其成!),毕竟是个出了问题就涉及到背锅。

一线开发不好做呀,既要考虑技术要点,又要临危受命考虑领导能不能挺你!

3039 次点击
所在节点    问与答
31 条回复
ilotuo
2019-06-08 16:10:40 +08:00
马克。顶。路过踩踩。
roshad
2019-06-08 16:15:13 +08:00
xamarin 想都没想过么
Bijiabo
2019-06-08 16:38:41 +08:00
感觉主要还是看生态,以及初期能不能找到有经验的合适的人,可能还是 React Native 相对更加合适一些。
baojiweicn2
2019-06-08 16:51:22 +08:00
rn 或 flutter。flutter 不行就只有 rn 了。rn 挺好用的
leconio
2019-06-08 20:08:58 +08:00
@ilotuo 谢谢帮踩
leconio
2019-06-08 20:09:58 +08:00
@roshad 主要是项目组没有一个会 C#的,而且,它构建项目怎样,据说要做很多平台化处理
leconio
2019-06-08 20:11:37 +08:00
@Bijiabo
@baojiweicn2
如果 Flutter 被否掉,我也会更倾向 ReactNative 一些,毕竟社区更加活跃。就是很担心 JavaScript,在很多业务的情况下,会不会开发效率还不如 Java
HarryQu
2019-06-08 21:40:08 +08:00
项目大的,定制性要求高的,对性能要求高的,对崩溃率要求低的,对适配机型要求多的。 老老实实原生开发,不要用什么跨平台框架,你会被产品搞崩溃的。

要求不高的用 rn 或者 flutter。weex 请忽略。
daquandiao2
2019-06-08 21:54:40 +08:00
weex 做的体验不如原生 rn 原理和 weex 差不多 也会有类似问题
你打开手机淘宝看看就知道了 里面挺多 weex 页面了
murmur
2019-06-08 22:09:54 +08:00
先排除 weex,既然 weex 是阿里搞出来的,阿里的闲鱼在吹 flutter,那 flutter 也可以排除,最后选择 react native
beimenjun
2019-06-08 22:10:18 +08:00
还有一种,用 Kotlin 写一个 Core,把所有业务逻辑搬到 Core 里面,然后两套 UI 各自做各自的内容。

优势:不需要什么社群支持
劣势:人员需求量比较大
MuscleOf2016
2019-06-08 22:15:38 +08:00
weex 还是算了,虽然自己公司的项目在用,不过 weex 实在太粗心了,自己文档都好几处错误。
hyyou2010
2019-06-08 22:26:40 +08:00
单机版产品?

如果要用 flutter 的话,最好去 flutter 社区或微信群找有经验的同学咨询一下,以防万一有跨不过的坑,尤其是所谓大型项目。目前国内使用 flutter 的几家都是大厂,似乎只应用在少量页面上,这点也建议在社区中咨询一下。

安全起见就原生。我是老板也选择原生。
wd
2019-06-08 23:19:37 +08:00
你们如果没有自己专门的团队维护基础框架的话,平时应付框架和各种第三方自带的组件就够你们喝一壶的了,别的要求基本是想象了,能一定程度解决跨平台就是万幸了
wd
2019-06-08 23:26:29 +08:00
rn 这么多年了还一堆坑,flutter 才几天。这个东西还需要考虑第三方组件的丰富程度,你总不能遇到需求就自己封一套组件吧,那比 native 开发都累
janus77
2019-06-08 23:37:37 +08:00
招会 ios 原生开发技能的人是必须的,因为像你所说的 surfaceview 这种级别的性能必须原生提供,而且 ios 的编译打包发布修 bug 等流程是需要人的
再问答问题,如果你必须要做跨平台而且考虑稳定性,那 rn 目前是唯一选择。
个人答案还是希望有原生应用,把部分功能模块迁移到混合式( rn ),然后根据你们的人力成本一步步渐进式迁移。
whypool
2019-06-08 23:57:53 +08:00
重构一时爽....

有性能要求还是原生,其他方案都不行,rn 都不行

非要搞出来,就拆分产品,保留高性能原生部分,能替代的,三大框架选一个熟悉的就行
Bijiabo
2019-06-09 01:02:21 +08:00
@leconio React Native 本身应该不会成为限制业务实现的瓶颈,可能关键还是在于软件管理。
对性能要求高的部分上原生 View 或者新开一个线程跑,我们去年开始用 React Native 开发物联网相关的应用,确实遇到了一些性能问题,优化一下问题不大。

感觉还是要产品设计与技术实现深度配合,如果 RN 搞不定,可以适当调整需求,找到平衡点,并不是一味的「就要这样」,真的遇到性能瓶颈了,也可以趁此机会讨论下「这个需求真的合理么」、「也许没必要这么做」。
baojiweicn2
2019-06-09 08:07:23 +08:00
@leconio 你是指的开发效率还是单纯的运行效率,开发效率应该是最高的吧,如果对 rn 熟悉的话,一堆的脚手架和模板都是现成的,除非有坑,其他方面还是蛮快的
0xcb
2019-06-09 09:58:37 +08:00
收藏了,看来都推荐 RN,原生开发换 RN 做界面会不会一开始开发效率变低,学习曲线如何

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

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

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

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

© 2021 V2EX