1

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

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

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

4

1 回答 1

4

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

另一种可能的方法是,如果您不想将 prod 密钥提交到您的 repo 中,则将其放在环境变量中。

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

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

  2. 将环境变量动态添加到您的 BuildConfig

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

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

于 2018-03-15T15:53:45.120 回答