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

ReactNative 使用微软的CodePush进行热更新,继续填坑的更多相关文章

  1. React Native之code-push的热更新(ios android)

    React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...

  2. ReactNative学习笔记(四)热更新和增量更新

    概括 关于RN的热更新,网上有很多现成方案,但是一般都依赖第三方服务,我所希望的是能够自己管控所有一切,所以只能自己折腾. 热更新的思路 热更新一般都是更新JS和图片,也就是在不重新安装apk的情况下 ...

  3. React Native使用code-push实现热更新

    这里就不记录了,下面的传送门介绍的通俗易懂,很详细,一步一步很容易实现成功. http://www.jianshu.com/p/f8689ccf0007

  4. react-native热更新之CodePush详细介绍及使用方法

    react-native热更新之CodePush详细介绍及使用方法 2018年03月04日 17:03:21 clf_programing 阅读数:7979 标签: react native热更新co ...

  5. react native 热更新

    一.安装codepush服务 npm install code-push-cli -gcode-push -v 二.创建codepush账号 code-push registercode-push l ...

  6. ReactNative 告别CodePush,自建热更新版本升级环境

    微软的CodePush热更新非常难用大家都知道,速度跟被墙了没什么区别. 另外一方面,我们不希望把代码放到别人的服务器.自己写接口更新总归感觉安全一点. so,就来自己搞个React-Native A ...

  7. CodePush热更新组件详细接入教程

    CodePush热更新组件详细接入教程 什么是CodePush CodePush是一个微软开发的云服务器.通过它,开发者可以直接在用户的设备上部署手机应用更新.CodePush相当于一个中心仓库,开发 ...

  8. 用CodePush在React Native App中做热更新

    最近在学React Native,学到了CodePush热更新. 老师讲了两种实现的方法,现将其记录一下. 相比较原生开发,使用React Native开发App不仅能节约开发成本,还能做原生开发不能 ...

  9. 深度使用react-native的热更新能力,必须知道的一个shell命令

    开篇之前,先讲一个自己开发中的一个小插曲: 今天周日,iOS版 App 周一提交,周三审核通过上架,很给力.不过,中午11:30的时候,运营就反应某个页面有一个很明显的问题,页面没法拉到底部,部分信息 ...

随机推荐

  1. SVG坐标系统

    SVG的画布.画布视区(viewBox).浏览器视窗的概念 画布 画布是绘制SVG内容的一块区域,理论上在所有维度上都是无限的.(也有人称为"SVG世界",但我觉得叫画布比较合适) ...

  2. 自助式BI为何能取代传统BI,逐渐占据商业智能市场?

    前言:未来的时代将由数据勾画,未来的BI将是自助BI的时代 随着数据爆发式增长,像ERP.OA.CRM等系统在企业运用的越来越多.这些系统的使用必然会产生很多的数据,比如在产品加工设计测试维护过程中产 ...

  3. 在View and Data API中更改指定元素的颜色

    大家在使用View and Data API开发过程中,经常会用到的就是改变某些元素的颜色已区别显示.比如根据某些属性做不同颜色的专题显示,或者用不同颜色表示施工进度,或者只是简单的以颜色变化来提醒用 ...

  4. Normalize.css的使用及下载

    Normalize.css 只是一个很小的CSS文件,但它在默认的HTML元素样式上提供了跨浏览器的高度一致性.相比于传统的CSS reset,Normalize.css是一种现代的.为HTML5准备 ...

  5. Java 策略模式和状态模式

    本文是转载的,转载地址:大白话解释Strategy模式和State模式的区别 先上图: 本质上讲,策略模式和状态模式做得是同一件事:去耦合.怎么去耦合?就是把干什么(语境类)和怎么干(策略接口)分开, ...

  6. 了解JavaScript 对象的属性操作

    提起操作, 很多人都会想到我们学习过程中最经常做的操作, 就是对数据库进行增, 删, 改, 查, 既然提到这个, 那么对于对象的属性操作也不例外, 基本上可以说也是这几个操作. JS中对象的属性标签 ...

  7. 【代码笔记】iOS-页面调的时候隐藏工具条

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. se ...

  8. Mac卸载MySQL

    打开终端输入以下指令即可 sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* rm ...

  9. monkey之monkey日志分析

    一.初步分析方法:Monkey测试出现错误后,一般的差错步骤为以下几步:1.找到是monkey里面的哪个地方出错2.查看Monkey里面出错前的一些事件动作,并手动执行该动作3.若以上步骤还不能找出, ...

  10. plain framework 商业版 开发总结2 项目管理器

    任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...