react-native-code-push进阶及实践小结

之前一直是做原生ios开发,早就听说react-native可以实现热更新,当时就觉得相当高大上的感觉,如今自己也开始着手RN开发,也终于和这个仰慕已久的热更新打了照面。这里就自己在集成code-push中遇到的一些问题以及使用来做一个总结。

code-push的入门使用篇,这篇文章说得很详细,自己开始集成的时候也是主要参照这篇文章https://www.jianshu.com/p/6a5e00d22723
code-push的进阶主要是参考这篇文章https://www.jianshu.com/p/6e96c6038d80
当然也可以自己搭建服务器,可以参考这篇文章https://www.jianshu.com/p/da0c1940b8e0

以下便是自己在使用code-push中的一些总结及遇到的一些问题

1、deploymentKey是否需要写在CodePush.sync中?

答案是要看你是否需要动态部署;所谓的动态部署就是在我们真正的项目中,我们一般会分为开发版(Test),灰度版(Staging)和发布版(Production),在Test中我一般是用来跟踪code-push的执行,在Staging中其实是和Production是同样的代码,但是当要热修复线上版本时,先会发布热更新到Staging版,在Staging测过后再通过promoting推到Production中去,所以如果你仅仅是测试一下code-push的使用及效果,你可以直接这样写
屏幕快照 2018-09-30 10.32.18.png

其中isAndroid是定义的一个判断是否为android平台的常量,后面跟的字符串分别是android平台和ios平台的Production下deplomentKey;

而如果是正式上线的项目,就需要动态部署,如何动态部署在上面提到的code-push的进阶那篇文章中有涉及到。其实从code-push的源码中我们也可以大致知道deploymentKey参数是否需要传入
屏幕快照 2018-09-30 10.37.58.png

该参数是一个optional即可传可不传的参数,图中的注释也提到如果不传就会从ios中的info.plist中以及android的MainActivity.java中获得,如果你传了这个参数,就直接使用你传的key值,而不会使用原生中定义的key值了。

2、如何打Staging原生包?
在android中,上面的code-push进阶那篇文章提到的是使用./gradlew assembleStaging来打包Staging下的apk,但是我在实践中用这行命令不对,经过一番琢磨,发现要使用./gradlew assembleReleaseStaging才行。

在ios中,开始以为只需要将Edit Scheme -> run -> buildConfiguration 改为Staging,但是这样打出来的包始终检测不到Staging版的热更新,其实是应该选择Archive-> build Configuration 改为Staging才行
屏幕快照 2018-09-30 10.51.02.png

3、热更新是更新的那些内容?
热更新只是更新的js代码,并不能更新原生中的更改,所以如果你在原生中改了什么东西或者是更新了一些RN的三方库都需要重新打原生包发布到AppStore或者是android应用市场中去,而不能通过热更新来实现(ps* 本人就是更新了一个RN三方库,然后想通过热更新去让用户更新版本,结果就导致用户点击某个按钮或者是页面中去的时候程序直接崩溃,被项目经理一顿批斗,哈哈)

4、已经发布到Production的更新如果撤销?
如果发生了我上面提到的发布出去的更新有bug或者重大崩溃,不想让更多的用户检测到此更新怎么办?这时你可以马上登录code-push官网https://microsoft.github.io/code-push/ ,然后登录进入到App Center,选择你对应的App, 选择Distribute-> Code-Push, 选择Production,点击你想要撤销的版本,有个设置的按钮,将Enabled 关掉,这样用户就检测不到你此版本了。

屏幕快照 2018-09-30 11.03.21.png

参考网址
code-push的入门使用篇
https://www.jianshu.com/p/6a5e00d22723
react-native-code-push进阶篇
https://www.jianshu.com/p/6e96c6038d80
windows服务器搭建code-push-server
https://www.jianshu.com/p/da0c1940b8e0

你可能感兴趣的:(react-native-code-push进阶及实践小结)