基于微软服务-搭建RN环境。
ios和Android的环境都已经在分支“20190513_feature_hot_tangliang”里面整理好了,如果需要看环境配置细节(本RN版本为"react-native": "0.59.5",)点击热更新,如果需要参考他人的CodePush热更新详细接入教程
基于“20190513_feature_hot_tangliang”分支的项目。
一 、安装code-push-cli
如果没有全局安装code-push-cli;则:
npm install -g code-push-cli;
需要在terminal里面登录微软的热更新中心。https://appcenter.ms/apps
在项目的根目录打开命令行: code-push register
会打开一个网页然后注册登录,会有一个key,复制这个key到命令行输入就可以了,这样在本地就登录了微软的服务了。
如果之前就有微软的账号可以直接用code-push login;
然后用命令在微软服务里面add对应的ios和Android的react-native项目。其中
code-push app add MyAppIOS ios react-native
MyAppIOS为名称。对应ios平台的rn项目。
code-push deployment ls MyAppIOS -k
列出对应项目的production和staging的deployment key;
code-push app add MyAppAndroid android react-native
code-push deployment ls MyAppAndroid -k
查找对应的key后复制出来,总共四个(ios和Android各两个,staging为测试环境,production为生产环境。)
二、修改对应的key
ios项目在如图所示的地方写入对应的key;
Android则在写入对应的key。这里只做production的输入示例。
三、打包对应的js文件
先打包对应的jsbundle文件。具体配置在package.json里面有配置。(如果没有对应的bundle文件夹需要先手动创建,ios在,./ios/下新建文件夹,Android在./android/app/src/main/assets/,Android的应该已经有了。)执行如下命令:
"bundle-android": "react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/",
"bundle-ios": "react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle",
打包Android和ios的js文件
四、接着打包对应ios和Android的包。基于分支项目可以直接用xcode和AndroidStudio打包对应的项目。具体配置可以看官方文档。打包apk正式包
1、打包Android包。
提示:如果你是mac电脑需要找到jdk的安装目录可以再命令行输入:
/usr/libexec/java_home -V
中间的结果表示当前 Mac 已经安装的 JDK 目录;最后一行表示默认使用的 JDK 版本
也可以直接用AndroidStudio打包apk。(测试包debug模式。)如果需要正式包可以看打包apk正式包
会生成对应的apk
2、打包ios包。
在xcode主界面。按下:shift+command+, 弹出如下选择release也可以debug。对应的热更新的key已经都在项目里面了。这里用release讲解。
然后直接close。
然后苹果手机连接电脑,如下图。这个是ios模拟器,可以点击选择自己的真机。
然后点击上图左边的三家箭头。接着等待xcode编译完成,就会在对应的模拟器或者手机安装我们的应用了。
五、发布到微软中心。
"push-bundlejs": "code-push release-react superviseApp ios --t 1.0.0 --dev false --d Production --des '第一次更新' --m false",
"push-bundlejs-android": "code-push release-react superviseAppAndroid android --t 1.0.0 --dev false --d Production --des '第2次更新' --m false",
发布对应的打包好的bundle到微软平台。这样我们打开手机的时候就会有热更新提示了。
命令说明:superviseApp为应用名称,ios为对应ios的应用,–t 1.0.0表示当前热更新推送到的目标版本。比如当前需要更新的app的版本为1.0.0,那么每次需要热更新都是1.0.0,除非下次发布了新的版本号。–-dev是否开发版本,–d
Production 对应的模式,是用production的key还是staging模式的key。–des 更新的描述,–m 是否强制更新。
ps:
1、iOS和android最好将版本号改为x.x.x形式
2、使用staging时貌似成功几率很低,所以在第一个版本未发布之前可以用production模式测试。
3、不适用于文件目录结构更改(添加文件可以)
4、 引入第三方后 如果修改了原生代码更新无法使用会导致闪退。
5、ios目前不能再debug模式测试更新 因为会一直加载本地jsbundle 覆盖下载后的,所以看不到效果。