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. javascript 表单

    在HTML中,表单是由<form>元素来组成的.在js中,表单对应的则是HTMLFormElement类型.它和其他HTML元素一样具有相同的默认属性.下面是HTMLFormElement ...

  2. JavaScript学习笔记1之基础知识点

    一.什么是JavaScrip JavaScript是一种动态类型.弱类型.基于原型的客户端脚本语言.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,在HTML网页 ...

  3. 贝塞尔曲线(UIBezierPath)属性、方法汇总

    UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...

  4. 【代码笔记】iOS-字符串的分割

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

  5. 3-udev

    Udev 这个是挂载上的u盘 拔掉再插上 查看u盘设备信息 拔掉再插上,显示了 来自为知笔记(Wiz) 附件列表

  6. XML简介与CDATA解释

    简介XML 是一种受到广泛支持的 Internet 标准,用于以一种特殊的方式编码结构化数据.实际上,以 XML 编码的数据可以通过任何编程语言解码,人们甚至可以使用标准的文本编辑器来阅读或编写 XM ...

  7. linux hosts文件详+mac主机名被莫名其妙修改

    1.名词解析 主机名: 无论是在局域网还是在INTERNET上,每台主机都有一个IP地址,用来区分当前是那一台机器(其实底层是使用机器的物理地址),也就是说IP地址就是一个主机的门牌号,唯一的标示这一 ...

  8. POJ2104 K-th Number [分块做法]

    传送:主席树做法http://www.cnblogs.com/candy99/p/6160704.html 做那倒带修改的主席树时就发现分块可以做,然后就试了试 思想和教主的魔法差不多,只不过那个是求 ...

  9. WWW读取安卓外部音乐文件

    需求分析 使用Everyplay(2121-1540版本)录屏,在升级SDK之后,遇到个问题,调用安卓原生的mediaplay进行播放音乐,在录屏时无法录制到声音,所以想到的解决办法是在Unity中播 ...

  10. GO语言总结(2)——基本类型

    上篇博文总结了Go语言的基础知识——GO语言总结(1)——基本知识  ,本篇博文介绍Go语言的基本类型. 一.整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有1 ...