CodePush中的staging deployment如何设置

咱们集成react-native的热更新主要是用来作一些小修复,直接用了微软的CodePush。CodePush默认的deployment分为Staging和Production,一个能够用来测试,一个用来为部署生产更新。本文记录了关键步骤和一些问题的解决方法。 咱们项目react-native的版本是0.47.2 参考文档CodePushjava

Andorid 参考文档

按照文档所述,获取keynode

code-push deployment ls YourApp -k

修改项目android/app/build.gradle文件react

android {
    ...
    buildTypes {
        debug {
            ...
            buildConfigField "String", "CODEPUSH_KEY", '""' // 这里须要,不然debug模式没法编译
            ...
        }

        staging {
            ...
            buildConfigField "String", "CODEPUSH_KEY", '"<INSERT_STAGING_KEY>"'
            ...
        }

        release {
            ...
            buildConfigField "String", "CODEPUSH_KEY", '"<INSERT_PRODUCTION_KEY>"'
            ...
        }
    }
    ...
}

固然你能够把key放在gradle.properites里面,而后再在build.gradle里面引用 接下来修改MainApplication.javaandroid

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        ...
        new CodePush(BuildConfig.CODEPUSH_KEY, MainApplication.this, BuildConfig.DEBUG), 
        ...
    );
}

如上面配置完成后,ios

react-native run-android --variant staging

你会发现app闪退。 按照build.gradle文件的注释,咱们应该对staging buildType作一些配置在git

apply from: "../../node_modules/react-native/react.gradle"

这行代码以前插入github

project.ext.react = [
  bundleInStaging: true, //不然js bundle不会打包进去
  devDisabledInStaging: true,
  jsBundleDirStaging: "$buildDir/intermediates/assets/staging",
  resourcesDirStaging: "$buildDir/intermediates/res/merged/staging",
]

iOS 参考文档

这个基本没有坑,照文档操做就好了,注意Build Location -> Per-configuration Build Products Path -> Staging中的路径改为release的就好了,否则编译会报找不到一些头文件react-native

结束

安卓文档还介绍了一种能够在一个手机中安装两种构建方式的apk的方法app

相关文章
相关标签/搜索