转载请注明出处王亟亟的大牛之路
最近都在忙着搭架子,找框架,谈需求和开会。甚至都没有时间好好装逼,昨天帮安卓的小伙把项目从安卓整体迁移到了RN的项目下面,过程中遇到很多不可描述的坑,这里给大家分享下经验
先安利,安卓收纳库:https://github.com/ddwhan0123/Useful-Open-Source-Android
React-Native收纳库:https://github.com/ddwhan0123/Useful-Open-Source-React-Native
由来
项目刚开始的阶段我还不在场(最初的app完全没有RN/Weex的相关模块),然后在我到岗后产品发现了,React-Native的“美好“,决定把原有的项目重构,7成的业务量迁移到React-Native模块。
人手问题
重构开始前的人员配比
Android: 2人
iOS: 4人
前端:1名(会Vue,会一点React,完全没摸过RN的)
过去一个月后
Android: 3人(有一个能写点简单RN页面)
iOS: 3人(原有的一个被我拽去强行干RN了)
前端:3(会React/Vue不会RN)+2(RN选手,会用Redux等第三方RN库)+1(iOS被强拽的小伙)
模块区分
在分页面之初和产品砍了砍准则
(很多人觉得奇怪,既然如此为什么不用纯RN?我的答案是,你不在位置上你不能理解,纯原生的人难道就待机?)
- 变动不大的用Native
- 跟硬件相关的模块用Native
- 逻辑复杂但是页面本身不复杂的用RN(这条被产品一个巴掌拍回了,他们不管实现难度)
- 需要热更的用RN
- 其他省略
然后原生只剩下以下模块
- 登陆/注册
- 支付页面
- WebView相关页面(这块你懂的,强行拽来的)
迁移iOS
建完项目后先是拽iOS部分
基本没有遇到任何阻力,10分钟(分支选择耗费了几分钟)就整完了简单的插了个RN页面,跑起来无异常,iOS Over
迁移Android
android长这样(自己项目各有差异,这个无所谓了,反正改安卓,改的不是目录是Gradle配置)
1.首先是查看授权,有就算了,没有就加
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
两个必要的授权加一下,一个是弹窗,一个是网络
2.项目文件的dependencies里加上RN的依赖
compile 'com.facebook.react:react-native:+' // From node_modules
3.android.gradle里添加本地Maven的依赖