📱背景
公司主要做toB的酒店业务,大量的业务是桌面web,当前一共有七名前端,大家都没有Native App的相关经验。
有一个15年上线的只是用来展示数据的APP,那当时也是交给外包团队做的。
📱起因
从用户使用系统的便利性出发,公司层面决定将当前产品部分模块移动化。
📱开始
移动化我们会有好几个选择 Native App、微信小程序、移动Web、类Ionic、跨平台技术栈:React Native,Flutter;
1、团队内没有IOS或者Android工程师,所以首先就pass掉了Native App。
2、因为产品的主要诉求是通过推送来提高活跃率,推送成为了必要的功能,考虑到这一点,就淘汰了移动端web和微信小程序。
3、关于Flutter,Flutter在我调研的时候 还处于没有发正式版的状态,而且Flutter国内的生态并没有很完善。
所以最终选择当前已经相对成熟的React Native技术栈,有问题便于查找和请教。
📱坑点
1.Android Studio升级
我们基础工程是基于React Native 0.59.4 init出来的。ios开发使用Xcode 10。android开发使用 Android Studio使用3.0
刚一开始的时候团队另外两位小伙伴使用ios模拟器进行预览开发,我个人使用android模拟器进行预览开发。各自相安无事。
开发到中期的时候,团队新入职小伙伴,公司给新员工配的windows电脑,所以他只能来使用Android Studio进行预览开发。然后他开发一天,提交代码。我更新完代码后发现,我跑不起来了。。好尴尬。然后我提交代码后 他也跑不起来了。。更尴尬。我就开始找问题,通过报错信息搜索解决方案(报错信息没有留存,没办法贴出来),然后也去问其他部门安卓开发的同事,他们看报错信息去解决jcenter的问题,后来发现问题是升级Android Studio的问题,Android Stutio 推荐使用 androidx 替换android support v4 所以安装的node modules里面安卓包里的以来的android support v4报错,所以将所有的依赖都换成androidx,问题解决。
没事不要升级Android Studio!!
2.Android 日期NaN
1 | let startTimeStr = '2020-01-01 10:00:08'; |
在release模式下 日期计算出问题,并不能得到正确的日期
原因是:不同系统的时间格式支持问题。 yyyy/mm/dd hh:mm 最通用
3.Android HTTPS请求失败
使用node写了一套api提供给App使用,测试环境正常运行。交给运维部署。运维部署了只开443端口 使用HTTPS访问。然后我们将配置文件中的链接改为线上链接。Android fetch报错 XHR requst failed。ios没有问题。
然后就开始搜索为什么RN Andorid使用HTTPS报错,得到的答案是需要去改android okhttp包。
但之前我们请求其他后台服务的HTTPS接口是正常的,所以我就在测试环境部署了一套HTTPS服务,然后也正常。看起来这个锅一定是运维的了。让运维把他们的nginx配置文件发给我。逐一排查,找到了问题
1 | ssl_stapling on; |
OCSP Stapling在验证ssl时出现问题。
在屈屈的博客找到答案
开发到现在能记得的问题暂时只有这三个。。
接下来会记录一下 关于RN 纯前端怎么来升级init出来的项目架构。