gradlew.bat 必须在项目根目录下通过 .\gradlew.bat 显式调用,依赖当前目录的 gradle/wrapper/ 下的 jar 和 properties 文件,强依赖正确配置的 JAVA_HOME(指向 JDK 8+ 根目录而非 JRE),且其行为由 wrapper.properties 中 distributionUrl 决定,与本地 Gradle 版本无关。

gradlew.bat 在项目根目录下才能运行
直接双击或在任意路径下敲 gradlew.bat 会失败,因为它的逻辑依赖当前目录下的 gradle/wrapper/gradle-wrapper.jar 和 gradle/wrapper/gradle-wrapper.properties。Windows 不像 Linux 那样默认允许执行脚本,所以必须明确指定路径并确保上下文正确。
常见错误现象:'gradlew' 不是内部或外部命令,也不是可运行的程序或批处理文件
- 你当前不在项目根目录(即包含
gradlew.bat文件的那个文件夹) - 你试图在子模块(如
app/)里运行它 —— 它只认项目顶层的 wrapper 配置 - 你没用
.\gradlew.bat前缀,Windows 默认不搜索当前目录(.表示当前路径)
运行前必须确认 JDK 已就绪且 JAVA_HOME 正确
gradlew.bat 本质是调用 Java 启动 gradle-wrapper.jar,它不检查 GRADLE_HOME,但强依赖 JAVA_HOME 指向一个可用的 JDK 8+ 目录。如果报错 java is not recognized 或构建中途卡在 “Starting Daemon”,大概率是 JDK 缺失或环境变量指向了 JRE 或错误路径。
- 运行
java -version和echo %JAVA_HOME%,两者输出应一致且版本 ≥ 8 - 不要把
JAVA_HOME指向...\jre目录,必须是...\jdk-xx或...\jdk-xx.x.x - Android Studio 自带的 JDK 通常位于
%USERPROFILE%\AppData\Local\Android\Sdk\jdks\...,可直接用
正确执行 gradlew.bat 的典型命令格式
所有命令都必须从项目根目录(含 gradlew.bat 的那个文件夹)中运行,且显式带上 .\ 前缀:
- 查看可用任务:
.\gradlew.bat tasks - 构建项目:
.\gradlew.bat build - 只编译不测试:
.\gradlew.bat compileJava - 强制跳过 Gradle daemon(适合调试卡死问题):
.\gradlew.bat build --no-daemon
注意:不要写成 gradlew.bat build(缺 .\),也不要写成 gradlew build(Windows 下没有可执行权限自动识别,必须带 .bat 后缀)。
wrapper.properties 里 distributionUrl 决定下载行为
打开 gradle/wrapper/gradle-wrapper.properties,关键行是:distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip。这个 URL 决定了:gradlew.bat 第一次运行时该去哪下、下什么版本、下哪种包(-bin 还是 -all)。
- 如果公司内网无法访问
services.gradle.org,需手动替换为镜像地址,例如阿里云:distributionUrl=https\://maven.aliyun.com/repository/public/org/gradle/gradle/8.6/gradle-8.6-bin.zip - 改完后首次运行仍会尝试下载;若已下载过旧版,它不会自动覆盖,需手动删掉
%GRADLE_USER_HOME%\wrapper\dists\gradle-8.6-bin\...对应文件夹 - 选
-bin还是-all?日常构建用-bin足够;需要离线查源码或 DSL 文档时才换-all
真正容易被忽略的是:wrapper 的行为完全由这个 properties 文件驱动,不是由你本地装的 Gradle 版本决定的 —— 即使你全局装了 Gradle 7.0,只要项目里写的是 8.6,gradlew.bat 就一定会拉 8.6 并用它执行。











