zoukankan      html  css  js  c++  java
  • ReactNative 使用微软的CodePush进行热更新,继续填坑

    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
    实验3阅读下面程序、分析说明运行结果,并上机验证。
    实验2利用循环计算n个圆柱体体积。
    实验1编写求圆面积的程序,要求当输入的半径r<=0时,提示输入错误,要求r为浮点型,r的数值是动态的由键盘输入;
    例7-12
    例 7-11
    例7-9
    例7-8
    例7-7
    例7-6
  • 原文地址:https://www.cnblogs.com/rayshen/p/5502538.html
Copyright © 2011-2022 走看看