React Native 热更新实现(Code push - Android)

1, 安装code-push (windows)

npm install -g code-push-cli

React Native 热更新实现(Code push - Android)

安装后执行

code-push

React Native 热更新实现(Code push - Android)

安装完成

2,创建code push 账号

code-push register

React Native 热更新实现(Code push - Android)

然后会弹出一个注册页面,建议设置默认浏览器为chrome,可以选择github或微软账号登入,登入成功后会显示你的access-key,我们直接copy一下

输入复制的access-key

React Native 热更新实现(Code push - Android)

 

3,code push 注册app

以haowanyou-yc-proxy为例

 code-push app add haowanyou-yc-proxy android react-native

React Native 热更新实现(Code push - Android)

我们把Production和Staging的key复制下来

 

4,集成Android开发环境

进入项目根目录,执行

npm install --save react-native-code-push

安装完成后,执行命令集成Android环境

react-native link react-native-code-push

React Native 热更新实现(Code push - Android)

一路回车,因为没有ios工程所以跳过了。

用Android studio打开Andorid 工程,发现../app/build.gradle多几行代码:

React Native 热更新实现(Code push - Android)

React Native 热更新实现(Code push - Android)

(如果没有的话,请手动添加,本人就没有下面apply的那行)

setting.gradle也多了几行

React Native 热更新实现(Code push - Android)

MainApplication.java也多了行代码,需要替换下deploymentkey

React Native 热更新实现(Code push - Android)

React Native 热更新实现(Code push - Android)

修改../app/build.gradle,添加deployment key

React Native 热更新实现(Code push - Android)

MainApplication.java 修改deployment key:

React Native 热更新实现(Code push - Android)

 

到此,android集成code push完成

5, 配置React Native环境

更新app当然要选择app的入口处更新,所以我们修改app.js,添加如下方法

React Native 热更新实现(Code push - Android)

为了判断热更是否成功,我们在app.js添加一个Text表示版本

React Native 热更新实现(Code push - Android)

React Native 热更新实现(Code push - Android)

打个生产包,在项目根目录执行:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

React Native 热更新实现(Code push - Android)

这样在android工程的assets文件夹下会生成index.android.bundle文件

React Native 热更新实现(Code push - Android)

然后到我们android studio中把 buildtype改为release:

React Native 热更新实现(Code push - Android)

运行app

React Native 热更新实现(Code push - Android)

6,发布jsbundle到codepush

比如我们现在要升级了,我们模拟一下,把rn页面的当前版本1.0.0的提示改为1.0.1:

React Native 热更新实现(Code push - Android)

然后我们在项目根目录创建一个bundles文件夹,然后打一个jsbundle包到bundles文件夹中:

react-native bundle --platform android --entry-file index.android.js --bundle-output ./bundles/index.android.bundle --dev false

React Native 热更新实现(Code push - Android)

发布到code push

code-push release haowanyou-yc-proxy ./bundles/index.android.bundle 1.0.0 --deploymentName Production --description "更改版本为1.0.1" --mandatory true
// code-push release/debug <应用名称> <Bundles所在目录> <对应的应用版本> [--deploymentName <更新环境>] [--description <更新描述>] [--mandatory <是否强制更新>]

React Native 热更新实现(Code push - Android)

可以通过命令查看发布的版本

code-push deployment ls haowanyou-yc-proxy

React Native 热更新实现(Code push - Android)

我们再运行下app,就会看到先显示1.0.0,然后页面闪一下变成了1.0.1

React Native 热更新实现(Code push - Android)

再看下日志:

React Native 热更新实现(Code push - Android)

到此,热更新完成。

 

Tips:

如果热更希望弹出dialog提示,发布时可以设置 --mandatory false,以下几种方式可以使用:

React Native 热更新实现(Code push - Android)

installMode对应三种更新策略:

  • IMMEDIATE 立即更新APP
  • ON_NEXT_RESTART 到下一次启动应用时
  • ON_NEXT_RESUME 当应用从后台返回时

React Native 热更新实现(Code push - Android)

上一篇:[C++程序设计]全局,局部变量


下一篇:spring事务详解