React Native 自定义 Gradle 脚本打包不同环境的 安卓 APK 包
定义 android/app/build.gradle
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
flavorDimensions "default"
productFlavors {
dev {
dimension "default"
resValue "string", "app_name", "测试包"
}
prd {
dimension "default"
resValue "string", "app_name", "生成包"
}
}
自定义 package.json 的script
"android-debug": "react-native run-android --mode=devDebug",
"android-prd": "react-native run-android --mode=prdDebug",
通过 --mode 指定搭配
- buildTypes 的 debug + productFlavors 的 dev
- buildTypes 的 debug + productFlavors 的 pro
终端运行不同的命令打包出来的包名就会不同

附上 AI 的解释
// 配置不同的构建类型及其属性
buildTypes {
// 调试构建类型 - 用于开发和测试阶段
debug {
// 使用调试签名配置,便于快速部署和测试
signingConfig signingConfigs.debug
}
// 发布构建类型 - 用于生产环境发布
release {
// 注意!在生产环境中,你需要生成自己的密钥库文件
// 参考:https://reactnative.dev/docs/signed-apk-android
// 这里暂时使用调试签名配置,实际生产环境应替换为正式签名
signingConfig signingConfigs.debug
// 是否在发布版本中启用代码混淆
// enableProguardInReleaseBuilds 应该是一个在其他地方定义的布尔变量
minifyEnabled enableProguardInReleaseBuilds
// 指定代码混淆规则文件
// getDefaultProguardFile("proguard-android.txt") - Android 默认的混淆规则
// "proguard-rules.pro" - 项目自定义的混淆规则
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
// 定义产品风味的维度
// 一个应用可以有多个维度的风味,例如:环境维度(开发/生产)和版本维度(免费/付费)
flavorDimensions "default"
// 配置不同的产品风味(变种)
productFlavors {
// 开发环境风味 - 用于内部测试和开发
dev {
// 指定此风味所属的维度
dimension "default"
// 设置应用名称资源,在开发环境中显示为"测试包"
resValue "string", "app_name", "测试包"
}
// 生产环境风味 - 用于正式发布
prd {
// 指定此风味所属的维度
dimension "default"
// 设置应用名称资源,在生产环境中显示为"生成包"
resValue "string", "app_name", "生成包"
}
}
这两个配置一起使用会产生四种构建变体组合:
devDebug- 开发环境调试版devRelease- 开发环境发布版prdDebug- 生产环境调试版prdRelease- 生产环境发布版

评论区