react-native热更新

2021-12-29 12:21:18 浏览数 (1)

前言

最新做了app的业务, 由于之前没有做过热更新导致每次更新都要去更新app, 特别麻烦. 所以花了点时间, 接入了热更新的功能。 我选择的是react-native-code-push的npm包。

接入与安装

首先进行安装

代码语言:javascript复制
  npm || yarn 
  react-native link react-native-code-push
  接入时选择跟自己的react-native匹配的react-native-code-push进行接入。

react-native-code-push接入

代码语言:javascript复制
全局安装cli
npm || yarn  install -g code-push-cli
注册账号
code-push register
登录
code-push login

android接入

代码语言:javascript复制
code-push app add appName(你要用的名字) Android react-native

code-push deployment -k ls <appName> 查看生成app的key, key分为ProductionStaging 我这边用的是Production, 在adnroid/app/src/main/java/com/你的app名称MainApplication.java 找到new CodePush(第一个参数替换app-Production key) 还有就是把android当前版本修改为1.0.0, 修改版本的文件在android/app/build.gradle的versionName. 最后使用mkdir bundles创建目录打包所需文件,

代码语言:javascript复制
react-native bundle --platform android --entry-file index.js --bundle-output ./bundles/index.android.bundle --assets-dest ./bundles --dev false

##ios接入

ios的操作步骤与android大部分是相似的, 不同的是 需要把ios的Production-key放到xcode的 以下所有的步骤都是在打开Xcode导入你的ios后进行操作的。 info.plistdCodePushDeploymentKey里。 还有就是在appDelegate.m 在顶部加入 #import <CodePush/CodePush.h> 在最下面 else, 加入

代码语言:javascript复制
return [CodePush bundleURL];
// return [[NSBundle mainBundle] URLForResource:@"assets/index.ios" withExtension:@"jsbundle"];
注释掉这段代码。

配置完以后生成ios的文件包, 上面已经创建过了, 就不在创建 在Xcode中记得修改版本。

代码语言:javascript复制
react-native bundle --platform ios --entry-file index.ios.js --bundle-output ./bundles/main.jsbundle --assets-dest ./bundles --dev false

最后上传

代码语言:javascript复制
code-push release 你的android||ios的app名称 ./bundles/ 1.0.0 --deploymentName Production  --description "1.修改标题颜色。" --mandatory false

注意

在对android或者ios更新的时候要注意当前你的包的版本,如果android||ios当前版本为1.0.2上传的版本也要是一一对应的。

补充

我觉得在使用的时候可以先使用官方的demo, 先测试下, 是否正常。 demo地址

0 人点赞