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

  • 相关阅读:
    Apache+php在windows下的安装和配置
    我的mac的其他满了,发现是一个叫core的文件
    如何去掉drwxr-xr-x@中的@符号Linux文件扩展信息
    Wireshark使用教程
    nano 编辑
    sed: 1: “…”: invalid command code on Mac OS
    wireshark error: There are no interfaces on which a capture can be done.
    mac os x10.9.2 查看进程对应端口
    Mac下安装LNMP(Nginx+PHP5.6)环境
    Web实现浏览器端大文件分片上传
  • 原文地址:https://www.cnblogs.com/rayshen/p/5502538.html
Copyright © 2011-2022 走看看