设为首页 收藏本站
查看: 1236|回复: 0

[经验分享] ReactNative 使用微软的CodePush进行热更新,继续填坑

[复制链接]

尚未签到

发表于 2017-2-25 10:29:36 | 显示全部楼层 |阅读模式
  1.别被开发环境骗了
  在我们开发react native的时候,一键运行工程,js改了,只要cmd+R就可以刷新了。然后会轻易以为真正app上线的时候也是一样,只要app一打开就是最新的。
  其实!这是一个骗局!
  假如没有微软的CodePush框架,react native只是一个用来开发原生本地app的工具,和原生开发并无大区别。
  原因如下:
  (1)目前支持ios的nodejs解释环境必须运行在MacOS上,假如你的linux服务器,根本就运行不了针对ios的react开发环境
  (2)苹果不允许即时的动态更新的app上架
  2.微软的codepush框架
  微软的codepush框架确实解决了这个问题,其操作原理是这样:
  (1)把react中的js打包,生成一个app(react-native官方就支持到这一步)
  (2)把最新的js包都打包上传到微软的服务器(codepush框架实现)
  (3)在app中判断本地js包的版本号和微软服务器的版本号,然后全部下载下来后实现更新(codepush框架实现)
  codepush.sync(paramas)可以实现更新,一般我们放在app启动的时候进行。或者可以在APP中增加一个按钮,点击就运行更新。就像在开发环境中使用cmd+R一样重新load。但是微软的服务器速度让人呵呵。
  3.codepush的使用
  详细的框架集成过程可以参考这两个博客:
  http://blog.csdn.net/oiken/article/details/50279871
  http://www.lai18.com/content/2561926.html
  (1)这里有个坑,我在使用他们的方法打包资源并上传的时候,通过更新,app无法加载出资源文件!
  所以我打包和上传的方式如下,MoxieSDKRN是我在CodePush注册的APP名称
  :



打包:(图片+JS)
react-native bundle --entry-file index.ios.js --bundle-output ./bundle/main.jsbundle --platform ios --assets-dest ./bundle --dev false
上传:
code-push release MoxieSDKRN ./bundle 1.0.0

  这里还有一个坑,会让你的图片显示不出,就是把你的结果拖入工程时,对于assets文件夹,你要选择create folder reference,而不是  create folder group.
  正确的结果是assets文件夹是一个蓝色的文件夹,整个一起作为bundle resources
  (2)这里另外一个坑是:
  如上面的博客所说,你APP内plist文件写的版本号可能是1.0.0,所以你的reactjs打包上传的版本也要是1.0.0(而不是1.0.1这样递增),你需要和APP保持一致,然后服务器会根据你最新上传的且和APP一样的版本作为最新版。
  查看版本记录可以使用下面的命令。
  4.常用的一些命令:
  查看历史上传过的版本:



code-push deployment history MoxieSDKRN Staging
  控制更新:
  (1)弹窗提示更新
codePush.sync({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE });
(2)下次启动时更新
codePush.sync();

如果希望自建热更新服务来实现,可以参考我的这篇博客:
http://www.cnblogs.com/rayshen/p/5737293.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346934-1-1.html 上篇帖子: angularjs2 学习笔记(一) 开发环境搭建 下篇帖子: MongoDB/SQL Server增量同步方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表