一、环境准备
ps:命令在终端默认目录下
1.安装Code-push cli -- $ npm install -g code-push-cli
2.注册CodePush账户 -- $ code-push register (点击弹出的网页的github注册,记录好返回的access token)
3.终端输入access token
4.添加CodePush应用 -- $ code-push app add XXX //xxx 为你要热部署的app name
成功后我们可以看到有两个发布键值。一个Production是对应生产环境的,二Staging是对应开发环境的
│ Name │ Deployment Key │
├────────────┼───────────────────────────────────────┤
│ Production │ xxxxx │
├────────────┼───────────────────────────────────────┤
│ Staging │ xxxxx
二、集成code-push 到工程文件
ps:以后命令在项目的根目录下
1.在应用中安装react-native插件 -- npm install --save react-native-code-push
2.npm i rnpm
3.rnpm link react-native-code-push
4.命令行这个时候需要输入我们之前获得的key,相应输入,即可配置完环境(注意这里要选择是正式版的key--Production还是测试版的key--Staging,不是发布到appstore可以用Staging的key)
5.xocde -> info.plist -> Bundle versions string, short 以及 studio -> build.gradle -> versionName 均将1.0 改为1.0.0
6.在studio的MainApplication.java还需要另外加上staging
import com.microsoft.codepush.react.CodePush; public class MainApplication extends Application implements ReactApplication { @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), //*************只改动这里,添加这行代码 ******************/ new CodePush("你的staging", MainApplication.this, BuildConfig.DEBUG) //*******************************/ ); } }; }
7.js入口处 加上
import codePush from "react-native-code-push";
//后台自动下载更新,重新进入app的时候更新
componentDidMount(){
codePush.sync();
}
//点击确定的时候 更新
codePush.sync({
updateDialog: true,
installMode: codePush.InstallMode.IMMEDIATE
});
三、测试
ps:以下命令均在工程根目录下:
1. react-native bundle --platform(platform) --entry-file (入口) --bundle-output codepush.js --dev false
模板:
react-native bundle --platform android --entry-file index.android.js --bundle-output codepush.js --dev false
react-native bundle --platform ios --entry-file index.ios.js --bundle-output codepush.js --dev false
2.code-push release(项目名称) codepush.js (版本号)
模板:
简单:code-push release MyProject codepush.js 1.0.0
默认生产环境: mandatory代表是否强制更新
code-push release MyProject codepush.js 1.0.0 --mandatory true
生产环境:
code-push release MyProject codepush.js 1.0.0 -d "Production" --mandatory true
当我们需要给用户测试的时候,可以先测试环境下发布给多少人更新,然后再正式版更新
1)有多少百分比的人能收到更新: rollout代表百分比
code-push release MyProject codepush.js 1.0.0 --rollout 20
2)code-push release MyProject codepush.js 1.0.0 -d "Production" --mandatory true
3)code-push promote <appName> <sourceDeploymentName> <destDeploymentName> //promote copy文件服务器的意思
四、CodePush常用命令
- code-push login 登陆
- code-push loout 注销
- code-push access-key ls 列出登陆的token
- code-push access-key rm <accessKye> 删除某个 access-key
CodePush常用与项目的命令:
ps:code-push app add XXX
- add 在账号里面添加一个新的app
- remove 或者 rm 在账号里移除一个app
- rename 重命名一个存在app
- list 或则 ls 列出账号下面的所有app
- transfer 把app的所有权转移到另外一个账号
- deployment history <appName> <deploymentName> 查看历史版本
- code-push rollback <appName> <deploymentName> 回滚上一次版本
五、studio在mac安装踩过的坑
1.“Could not get BatchedBridge, make sure your bundle is packaged properly”
http://stackoverflow.com/questions/38870710/error-could-not-get-batchedbridge-make-sure-your-bundle-is-packaged-properly
2.Gradle build-info.xml not found for module app. Please make sure that you are using gradle plugin '2.0.0-alpha4' or higher.
http://blog.csdn.net/my_chen_suo_zhang/article/details/51469001
来源:oschina
链接:https://my.oschina.net/u/2346786/blog/747132