React Native CodePush“生产”部署的不同密钥

时间:2018-02-18 10:57:00

标签: react-native code-push

我的应用与“暂存”部署密钥“ sss ”相关联。它定义在/android/app/src/main/res/values/strings.xmlreactNativeCodePush_androidDeploymentKey下。

现在,当我实际发布APK时,我想使用“生产”部署密钥“ ppp ”。

最好的方法是什么?我如何自动化它,所以它知道它应该使用'ppp'键?我使用./gradlew assembleRelease命令构建APK。

1 个答案:

答案 0 :(得分:3)

执行此操作的标准方法是使用构建类型资源覆盖。 如果您的构建类型为debugrelease,则会在/android/app/src/release/res/values/strings.xml处放置一个strings.xml文件,其中只有一个键reactNativeCodePush_androidDeploymentKey的值为ppp

另一种可能的方法是,如果你不想将你的prod密钥提交到你的repo,那就是将它放在一个环境变量中。

  1. 您的Gradle文件必须读取env var:

    def codePushKey = System.getenv("CODEPUSH_KEY") ?: "sss"

  2. 动态地将env var添加到BuildConfig

    buildTypes {
            release {
                minifyEnabled true
                debuggable false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.config
                buildConfigField "String", "CODEPUSH_KEY", codePushKey
            }
    
  3. 使用BuildConfig var而不是字符串资源替换CodePush实例。 在ReactNativeHost实现中,在getPackages()覆盖中,将CodePush实例化更新为:

  4. new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG)