如何让gradlew读取.env.production而非默认.env文件?
React Native构建Release版指定读取.env.production环境变量
下面提供几种可行的实现方式,根据你的项目配置选择适合的方案:
方案一:构建命令临时指定环境文件
直接在执行gradlew命令前通过环境变量指定要读取的.env文件,无需修改配置文件:
cd android ENVFILE=.env.production ./gradlew bundleRelease
这个方式适合临时切换环境,每次构建时明确指定即可。
方案二:通过Gradle配置自动关联Release环境到.env.production
如果你的项目使用了react-native-config库,修改android/app/build.gradle文件,添加环境文件的映射规则:
// 在文件顶部添加 project.ext.envConfigFiles = [ debug: ".env", release: ".env.production" ] // 确保下面的apply语句存在(react-native-config安装时会自动添加) apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
配置完成后,执行./gradlew bundleRelease时,Gradle会自动读取.env.production文件。
方案三:手动配置Gradle读取指定环境变量文件
如果没有使用第三方环境变量库,可以手动在Gradle中编写读取逻辑:
- 打开
android/app/build.gradle,找到buildTypes下的release块 - 添加读取
.env.production文件并注入环境变量的代码:
android { ... buildTypes { release { ... // 读取.env.production文件 def envFile = file("../.env.production") if (envFile.exists()) { Properties envProps = new Properties() envProps.load(new FileInputStream(envFile)) // 将环境变量注入到BuildConfig和资源文件中 envProps.each { key, value -> buildConfigField "String", key, "\"${value}\"" resValue "string", key, "\"${value}\"" } } } } }
这样Release构建时会自动加载.env.production中的变量。
需要注意的是,如果你之前有配置过默认读取.env的逻辑,确保将其替换或调整为Release环境下优先读取.env.production。
内容的提问来源于stack exchange,提问作者Lenny4
相关产品推荐
相关产品推荐

