Android Studio打开同仓库两个项目Git版本不一致问题咨询
问题根因拆解
核心误区:Android Studio的Git配置不影响Gradle脚本的命令搜索逻辑
你在AS设置中配置的Git路径,仅供给AS自带的版本控制功能使用。Gradle脚本中通过"git --version".execute()调用Git时,会直接从当前Gradle进程的PATH环境变量里搜索Git可执行文件,完全不会读取AS的Git配置,所以两个项目AS配置相同也会出现版本不一致的情况。M1芯片的架构差异导致进程
PATH不同
M1系列Mac支持两种进程运行模式:ARM原生模式、Rosetta 2转译的x86_64模式,两种模式下进程加载到的PATH环境变量优先级不同:
- 如果Gradle进程以x86_64模式运行,
/usr/bin的优先级可能高于/opt/local/bin,搜索到的是系统自带的/usr/bin/git,对应版本2.30.1 - 如果Gradle进程以ARM原生模式运行,
/opt/local/bin优先级更高,搜索到的是你额外安装的/opt/local/bin/git,对应版本2.14.1
- 项目Gradle JDK配置差异触发架构差异
如果两个项目配置的Gradle JDK架构不同(一个是x86版JDK、一个是ARM版JDK),就会导致两个项目的Gradle进程运行架构不同,最终搜索到的Git版本不一致。
验证方法
你可以在两个项目的Gradle脚本中添加如下打印逻辑,就能直接看到差异:
// 打印当前进程的PATH println("当前PATH:${System.getenv("PATH")}") // 打印当前进程运行架构 println("当前架构:${System.getProperty("os.arch")}")
解决方案
如果要保证两个项目调用的Git版本统一,不要直接调用git命令,而是写死Git的绝对路径即可:
println("## ${"/opt/local/bin/git --version".execute().text.trim()}")
内容的提问来源于stack exchange,提问作者Favolas
相关产品推荐
相关产品推荐

