gradlew是gradlewrapper的缩写,对gradle的命令进行了包装,比如我们进入到指定Module目录并执行“gradlew assemble”即可完成对当前Module的构建(Windows系统下)。
这种错误,一般是没有配置gradle的环境变量,打开项目里面gradle-wrapper.properties,查看使用的版本
在Androidstudio设置中找到gradle的缓存路径,然后打开wrapper/dists
Windows 下 gradlew 不是内部或外部命令:正确运行 Gradle Wrapper 的方法
问题现象
在 Windows 的 CMD 或 PowerShell 中构建 Android 项目时,执行 gradlew assembleDebug 后出现:
gradlew 不是内部或外部命令,也不是可运行的程序或批处理文件。
这通常不是 Gradle 没有配置环境变量,而是命令执行位置或调用方式不正确。
先理解:gradlew 和 gradle 有什么区别?
gradle 是系统安装的 Gradle 命令,需要配置环境变量。gradlew 是项目自带的 Gradle Wrapper,会根据项目的 gradle/wrapper/gradle-wrapper.properties 自动下载并使用指定版本的 Gradle。
因此,日常构建 Android 项目优先使用 gradlew。它可以保证团队成员和 CI 使用相同的 Gradle 版本,不需要为 gradlew 单独配置 GRADLE_HOME。
正确做法:在项目根目录执行
先进入包含 gradlew.bat、gradlew、settings.gradle 或 settings.gradle.kts 的项目根目录。
PowerShell:
.\gradlew.bat assembleDebug
也可以使用:
.\gradlew assembleDebug
CMD:
gradlew.bat assembleDebug
如果需要构建 Release 包,将 assembleDebug 改成 assembleRelease。
为什么直接输入 gradlew 会失败?
PowerShell 默认不会从当前目录查找可执行文件。即使 gradlew.bat 就在当前目录,也必须使用 .\ 前缀明确指定当前目录。CMD 的行为不同,但显式使用 gradlew.bat 更清晰,也更容易排查。
检查项目是否包含 Wrapper
项目根目录应至少包含以下文件:
- gradlew
- gradlew.bat
- gradle/wrapper/gradle-wrapper.properties
如果这些文件缺失,说明项目没有提交 Wrapper。此时可在已安装 Gradle 的环境中执行 gradle wrapper 生成,再将生成的文件提交到版本控制。
常见排查
1. 在错误目录执行
不要在某个 module 目录内直接执行命令。先返回项目根目录,再运行 Wrapper。
2. 第一次下载依赖失败
Wrapper 首次运行需要下载 Gradle 发行包,同时 Android 构建还会下载依赖。检查网络、代理、镜像源和公司证书配置。
3. Java 版本不匹配
Gradle 与 Android Gradle Plugin 对 JDK 有版本要求。可先执行 java -version,再根据项目配置选择 Android Studio 使用的 JDK。
4. 文件被权限或安全软件拦截
确认 gradlew.bat 未被阻止,项目目录具备读写权限;必要时以普通管理员权限重新打开终端。
验证命令
在项目根目录执行:
.\gradlew.bat --version
若能显示 Gradle、JVM 和操作系统信息,说明 Wrapper 已可正常使用。
总结
遇到 gradlew 找不到时,不要急着配置 Gradle 环境变量。优先确认自己位于项目根目录,并在 PowerShell 中使用 .\gradlew 或 .\gradlew.bat 执行。只有项目缺少 Wrapper 文件时,才需要补充生成 Wrapper 或改用系统安装的 gradle 命令。
找到如下目录
配置为GRADLE_4.4_HOME,然后在path中增加一项%GRADLE_4.4_HOME%\bin,确定退出,gradle环境就配置完成了
验证一下
这里有一个坑, gradlew在项目根目录下才有效,如果进入到module中是无效的