前言
最新做了app的业务, 由于之前没有做过热更新导致每次更新都要去更新app, 特别麻烦. 所以花了点时间, 接入了热更新的功能。
我选择的是react-native-code-push
的npm包。
接入与安装
首先进行安装1
2
3npm || yarn
react-native link react-native-code-push
接入时选择跟自己的react-native匹配的react-native-code-push进行接入。
react-native-code-push接入
1 | 全局安装cli |
android接入
1 | code-push app add appName(你要用的名字) Android react-native |
code-push deployment -k ls <appName>
查看生成app的key, key分为Production
与Staging
我这边用的是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创建目录打包所需文件,1
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.plistd
的CodePushDeploymentKey
里。
还有就是在appDelegate.m
在顶部加入#import <CodePush/CodePush.h>
在最下面 else, 加入1
2
3
4
return [CodePush bundleURL];
// return [[NSBundle mainBundle] URLForResource:@"assets/index.ios" withExtension:@"jsbundle"];
注释掉这段代码。
配置完以后生成ios的文件包, 上面已经创建过了, 就不在创建
在Xcode中记得修改版本。1
react-native bundle --platform ios --entry-file index.ios.js --bundle-output ./bundles/main.jsbundle --assets-dest ./bundles --dev false
最后上传
1 | 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地址