gradle 在 m 系列 mac 上无需单独适配架构,但必须确保 jdk、android studio、gradle 及构建任务全链路统一为 arm64;否则会卡在下载、同步或 gradle -v 报错。

Gradle 在 M 系列 Mac 上不需要单独“适配架构”,但必须和 JDK、Android Studio、构建任务形成 ARM64 一致链,否则会卡在下载、同步、或 gradle -v 报错。
确认 JDK 是 ARM64 版本
Gradle 运行依赖 JVM,如果 JDK 是 Intel(x86_64)版,即使 Gradle 本身是通用的,也会触发 Rosetta 2 转译,导致:
- Gradle 启动慢、
gradle --version卡住数秒 - Android 模拟器启动失败(因 adb 与 JDK 架构不匹配)
-
gradle build中某些 native 插件(如 NDK 相关)报Unsupported architecture
执行以下命令检查:
arch /usr/libexec/java_home -V
输出中应同时出现 arm64 和对应路径(如 jdk-17.0.1.jdk/Contents/Home)。若只看到 x86_64,请卸载旧 JDK,从 Eclipse Temurin 或 Oracle 下载标有 ARM64 或 Apple Silicon 的版本。
Gradle 安装方式优先选 brew 或手动解压 bin 包
避免用 IDE 自带 wrapper 下载的 Gradle(它可能拉取 x86 兼容包),推荐明确控制版本与分发类型:
- 用 Homebrew 安装(自动选 ARM64):
brew install gradle - 手动安装:从 Gradle 官网 下载
-bin.zip(不是-all.zip),解压后配置GRADLE_HOME和PATH - 不要用
-src.zip或自行编译源码——M 系列对 Gradle 构建工具链无特殊要求,纯属增加复杂度
验证是否生效:gradle -v 输出第一行应为 JVM: 17.0.1 (Eclipse Adoptium 17.0.1+12),且末尾无 (x86_64) 字样。
gradle-wrapper.properties 中的 distributionUrl 必须指向 ARM 友好版本
Android Studio 新建项目默认生成的 wrapper 往往指向通用 URL,但某些老版本 Gradle(如 6.5)未完整支持 ARM64 的 java.util.zip 实现,会导致解压失败或卡在 Downloading gradle-x.x-bin.zip。
打开项目根目录下的 gradle/wrapper/gradle-wrapper.properties,将 distributionUrl 改为:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
理由:
-
8.3+是当前(2026 年)对 Apple Silicon 支持最稳定的版本(JDK 17+ + ARM64 JVM 全链路验证) - 务必用
-bin.zip,-all.zip在 M 系列上解压更慢,且无实际收益 - 避免
7.5及更早版本——它们在 macOS Sonoma/Ventura 上偶发java.nio.file.FileSystemException
关键环境变量要写进 .zshrc,且不能混用 .bash_profile
M 系列 Mac 默认 shell 是 zsh,而很多教程仍教改 .bash_profile。若两者共存且未互相 source,会出现终端里 gradle -v 成功,但在 Android Studio Terminal 或 VS Code 内置终端里命令未找到。
正确做法:
- 删掉
.bash_profile中所有关于GRADLE_HOME、PATH的重复定义 - 只在
~/.zshrc里写:
export GRADLE_HOME=/opt/homebrew/opt/gradle/libexec # brew 安装路径 # 或 export GRADLE_HOME=/Users/you/gradle-8.3 export PATH=$GRADLE_HOME/bin:$PATH
然后运行:source ~/.zshrc。验证:新开一个终端窗口,执行 echo $GRADLE_HOME 和 which gradle,路径应一致且不报错。
最容易被忽略的是 Gradle 和 JDK 的架构绑定关系——它不体现在 Gradle 自身代码里,而藏在 JVM 启动参数、java.util.zip 实现、以及 Android SDK 中 native 工具链的调用路径里。只要其中一环是 x86_64,整个构建链就可能在冷启动、依赖解析、或 AAPT2 编译阶段静默卡住,而不是抛出明确错误。











