求助帖,做过跨端(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 刚出世的时候还不是坑一大堆,毕竟社区活跃呀,坑多人更多呀,坑总要有人或者公司带头填,不过大环境下的架构师都会选择稳定(坐享其成!),毕竟是个出了问题就涉及到背锅。

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

3061 次点击
所在节点    问与答
31 条回复
leconio
2019-06-10 10:02:09 +08:00
@HarryQu 是呀,但是现在互联网届正在过冬,在养一个几十人的 iOS 估计不太现实。
leconio
2019-06-10 10:04:49 +08:00
@daquandiao2
@murmur
项目有很多的业务,估计 weex 和 rn 技术站 hold 不住。主要是怕业务越来越多的情况下,冗杂的代码会使项目开发效率越来越低
leconio
2019-06-10 10:05:21 +08:00
@beimenjun iOS 好像不能运行 jvm 吧,我倒是想过用 go,哈哈哈哈
leconio
2019-06-10 10:06:14 +08:00
@MuscleOf2016 是呀,我就是再探文档的坑的时候发的这个求助帖,感觉文档比较老了
leconio
2019-06-10 10:07:24 +08:00
@hyyou2010 弱联网 App,无网情况下也可以工作,待有网上传业务数据,不过重构想把它改成强联网 App。
leconio
2019-06-10 10:09:00 +08:00
@wd 没有第三方框架,不管地图,支付还是什么组件,都是自研,支付是直接对接。你这么一说我到想到了,如果我们改变了技术栈,公司其他平台架构好像都要变- -
murmur
2019-06-10 10:20:25 +08:00
@0xcb rn 是对前端友好,因为用了前端熟悉的技术栈和语法,真正到最后都是拼 native
hyyou2010
2019-06-10 10:29:32 +08:00
有服务器的话,可以把大量业务逻辑放后端,前端跨平台就容易多了
NonClockworkChen
2019-06-10 10:33:56 +08:00
建议你们调研一下,RN 的组件有多少没有覆盖你们的原生功能。
大型 App 用 RN 真的是噩梦,更别提 RN 各种闪退 bug。
老老实实用原生 iOS,真的比 RN 更省钱!
wd
2019-06-10 20:55:22 +08:00
@leconio #26 如果你们有能力自研,那 rn 可以把一部分逻辑双端一次实现,还是挺不错的。代价就是出问题的时候复杂度变高很多,有些 rn 自己的 bug 很难弄。
yurnery
2019-08-19 10:10:27 +08:00
@HarryQu 我觉得这个老哥说得对.
1. 要跨端就只有 RN 和 Flutter, 其他的可以忽略了.
2. 我们现在就是用的 RN, 一开始开发页面确实写得挺快 (但我觉得也就和 iOS 原生开发速度差不多而已, 不过省了一个开发安卓页面的时间不是嘛), 写着到现在业务越来越多, 发现用 RN 的开发成本要比原生要高得多, 把写界面的时候都省下来进行性能优化, 时间都不够, 而且还不一定能优化好.业务越多, 要进行重构的成本也就越大
3. RN 本身每次发布都会带一些问题, 三方库现在很多也不更新, 感觉不是很友好, 很多库作者弃坑了的感觉
4. 你们都是 Android 开发, 肯定也还要招 iOS 开发的, 不是说用了 RN 就只跟 js 打交道, 特定平台问题还是很多
5. Flutter 没在项目中用过, 但是看到 issue 量就有点虚

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

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

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

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

© 2021 V2EX