美文网首页
React Native 热更新

React Native 热更新

作者: Bana | 来源:发表于2018-11-12 09:58 被阅读153次

    热更新库react-native-code-push

    1.安装

    npm i react-native-code-push --save
    react-native link react-native-code-push
    

    2.全局安装code-push 命令插件

    npm install -g code-push-cli
    //查看版本
     code-push -v
    

    3.注册code-push账号

    //注册账号会跳出注册网页
    code-push register
    //授权通过之后,CodePush会告诉你“access key”,复制此key到终端即可完成登录
    code-push login
    

    PS.相关命令

    code-push login  //登陆
    code-push loout  //注销
    code-push access-key ls  //列出登陆的token
    code-push access-key rm <accessKye>  //删除某个 access-key
    code-push app ls //查看所有app
    code-push deployment history MyAPP Staging //c查看历史发布版本
    code-push release-react MyAPP ios //发布到code-push Staging
    code-push promote MyAPP Staging Production //从Staging发布到正式环境
    code-push release-react MyAPP ios -d Production //直接发不到正式环境
    code-push deployment ls MyAPP  -k //查看key
    

    4.创建应用

    两种方法
    (1).通过官网
    (2).通过命令行

    //ios
    code-push app add helloworld ios react-native
    //android
    code-push app add helloworld android react-native
    

    5.查看你的deployment key

    code-push deployment ls helloworld  -k
    
    查看codepush的KEY

    6.在Xcode中填写你的key


    info.list

    7.添加测试

    code-push deployment add helloworld Test
    

    8.代码中使用

    import codePush from "react-native-code-push";
    let codePushOptions = {checkFrequency: codePush.CheckFrequency.MANUAL};
    HelloWorld = codePush(codePushOptions)(HelloWorld);
    const myKey = '***'
    codePush.checkForUpdate(myKey)
    .then((update)=>{
      console.log('update is' , update)
      if(!update){
        Alert.alert("提示","已是最新版本--",[
          {text:"Ok", onPress:()=>{
              console.log("点了OK");
            }}
        ]);
     }else{
      codePush.sync({
        deploymentKey: myKey,
         updateDialog: {
           optionalIgnoreButtonLabel: '稍后',
           optionalInstallButtonLabel: '后台更新',
           optionalUpdateMessage: '有新版本了,是否更新?',
           title: '更新提示'
         },
         installMode: codePush.InstallMode.IMMEDIATE
       });
     }
    })
    

    PS:注意IOS是根据info中的版本号来决定是否更新,版本独立不影响的位数是三位
    即iOS版本都是独立不影响,version=X.Y.Z,当codepush发布更新时,只会影响与其X.Y.Z三位数完全相同的版本,其他版本不会受影响。

    打包

    //在ios目录下创建bundle目录,在项目目录下执行,然后在Xcode中需要把 bundle 添加在项目下
    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle
    //react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    
    //打包到 stagging
    code-push release-react helloworld ios 
    //放到production下
    code-push promote helloworld Staging Production
    
    

    问题: 本人一直以为
    如: 之前是1.0.0打包的,然后提交codepush为 v1版本,下次更新打包 1.0.1 为 v2 版本就可以了..试了半天,一直不更新.
    结果:本来是1.0.0的版本,如果要进行热更新是不需要修改 info.list的版本号的,还是以1.0.0打包上去就可以了,codepush会以打包上去的 v1,v2的更新时间进行热更新,也就是codepush官网中的target version 就是你要进行热更新的版本

    WX20181112-152536@2x.png

    相关文章

      网友评论

          本文标题:React Native 热更新

          本文链接:https://www.haomeiwen.com/subject/asjqfqtx.html