我的应用程序与“暂存”部署密钥“ sss ”相关联。它定义在/android/app/src/main/res/values/strings.xml
, 下reactNativeCodePush_androidDeploymentKey
。
现在,当我实际发布 APK 时,我想使用“生产”部署密钥“ ppp ”。
最好的方法是什么?我如何自动化它,所以它知道它应该使用“ppp”键?我使用该./gradlew assembleRelease
命令来构建 APK。
我的应用程序与“暂存”部署密钥“ sss ”相关联。它定义在/android/app/src/main/res/values/strings.xml
, 下reactNativeCodePush_androidDeploymentKey
。
现在,当我实际发布 APK 时,我想使用“生产”部署密钥“ ppp ”。
最好的方法是什么?我如何自动化它,所以它知道它应该使用“ppp”键?我使用该./gradlew assembleRelease
命令来构建 APK。
执行此操作的标准方法是使用构建类型资源覆盖。如果您的构建类型是debug
and release
,您可以将 strings.xml 文件放在/android/app/src/release/res/values/strings.xml
只有reactNativeCodePush_androidDeploymentKey
一个值为的键ppp
另一种可能的方法是,如果您不想将 prod 密钥提交到您的 repo 中,则将其放在环境变量中。
您的 Gradle 文件必须读取 env var:
def codePushKey = System.getenv("CODEPUSH_KEY") ?: "sss"
将环境变量动态添加到您的 BuildConfig
buildTypes {
release {
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
buildConfigField "String", "CODEPUSH_KEY", codePushKey
}
将您的 CodePush 实例化替换为 BuildConfig var 而不是字符串资源。在您的ReactNativeHost
实现中,在getPackages()
覆盖中,将 CodePush 实例更新为:
new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG)