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

相關文章
相關標籤/搜索