CodePush iOS与Android完美集成

亡梦爱人 提交于 2020-03-02 10:58:37

一、环境准备

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!