Gradle进程环境变量未更新,assembleRelease无法读取最新终端变量
解决
./gradlew assembleRelease无法读取最新终端环境变量的问题 问题分析
Gradle守护进程或构建缓存可能保留了旧的环境上下文,导致执行./gradlew assembleRelease时未读取终端最新的环境变量;而Metro通过--reset-cache强制刷新了缓存,所以能获取新值。
解决方案步骤
1. 终止所有Gradle守护进程
Gradle守护进程会驻留内存并缓存环境变量,执行以下命令彻底关闭:
./gradlew --stop
重新执行构建时,守护进程会重启并读取最新的终端环境变量。
2. 清除Gradle本地缓存
如果守护进程重启无效,清除Gradle的全局缓存目录:
# macOS/Linux rm -rf ~/.gradle/caches/ # Windows(PowerShell) Remove-Item -Recurse -Force $HOME/.gradle/caches/
注意:此操作会清除所有Gradle项目的缓存,首次重新构建会重新下载依赖,耗时略长。
3. 构建时直接注入环境变量
若要确保变量生效,可在构建命令中直接指定最新值:
YOUR_ENV_VAR=新值 ./gradlew assembleRelease
这种方式会强制覆盖构建进程的环境变量,不受缓存影响。
4. 检查配置文件是否硬编码旧值
排查项目根目录的gradle.properties和android/local.properties文件,确认没有硬编码的旧环境变量值,避免覆盖终端变量。
5. 使用全新终端会话构建
若使用tmux、screen等持久化终端会话,可能会话本身保留了旧变量。关闭当前会话,重新打开终端窗口后再执行构建命令。
内容的提问来源于stack exchange,提问作者mcmohan_cycle
相关产品推荐
相关产品推荐

