Sublime Text 不需配置 Gradle 环境,应直接调用项目自带的 ./gradlew 或 gradlew.bat;需设 "shell": true、"working_dir"、"file_regex",用 "cmd" 而非 "shell_cmd",并确保 gradlew 存在且有执行权限。

Sublime Text 不能也不需要“配置 Gradle 环境”——它只负责调用 ./gradlew 或 gradlew.bat,所有构建失败都源于命令执行上下文不对,而不是编辑器缺什么功能。
为什么 ./gradlew 在终端能跑,Sublime 里却报 command not found
Sublime 启动时默认不加载你的 shell 初始化文件(比如 ~/.zshrc),所以即使 gradle -v 在终端可用,它的构建进程也看不到你设的 PATH 或别名。
- 最稳解法:直接用项目自带的
./gradlew(macOS/Linux)或gradlew.bat(Windows),它不依赖全局环境,且版本严格匹配gradle/wrapper/gradle-wrapper.properties中声明的 distributionUrl - 必须确保
gradlew文件在项目根目录下有执行权限:chmod +x gradlew(macOS/Linux) - 在
.sublime-build中加"shell": true,让 Sublime 复用当前用户的 shell 环境(注意:仍不一定加载~/.zprofile) - 若仍失败,改用绝对路径,例如
"/Users/you/myapp/gradlew",避免工作目录解析歧义
.sublime-build 文件里 cmd 和 shell_cmd 到底该用哪个
用 cmd,别用 shell_cmd —— 后者把整个字符串当 shell 命令执行, 这类占位符完全不生效,输 assembleDebug 按回车也没反应。
- 正确写法:
"cmd": ["./gradlew", "$1"](macOS/Linux)或"cmd": ["gradlew.bat", "$1"](Windows) -
"working_dir": "${project_path:${folder}}"必须设置,否则./gradlew在子目录执行会找不到settings.gradle或 wrapper 目录 - 加
--console=plain --no-daemon参数能避免 ANSI 转义符干扰输出,也让错误行号更干净,方便跳转
错误行双击不跳转?file_regex 没配对
Gradle 默认输出格式基本兼容 ^(.*?):([0-9]+):([0-9]+):(.*)$,但加了彩色控制符或 daemon 日志后容易失效。
- 推荐固定写法:
"file_regex": "^(.*?):([0-9]+):([0-9]+):.*$"(去掉末尾捕获组,防空格/冒号干扰) - 配合
--console=plain --no-daemon使用,能大幅提高匹配率 - 如果项目是 Kotlin DSL(
build.gradle.kts),Gr8 插件不支持语法高亮,得单独装 Kotlin 插件并手动绑定语法,否则连文件类型都识别错
Android 项目里 assembleDebug 执行完没生成 APK?
不是构建失败,是 Sublime 只管执行命令、不管输出路径。APK 确实生成了,但你得自己去 app/build/outputs/apk/debug/ 找,或者加个 variant 直接调 adb install。
- 在构建定义里加 variants,例如:
{"name":"Install Debug APK","cmd":["adb","install","-r","${project_path:${folder}}/app/build/outputs/apk/debug/app-debug.apk"]} - 确保
adb已加入PATH,或显式写完整路径如/Users/you/Library/Android/sdk/platform-tools/adb - 别忽略
"selector": "source.java, source.gradle, source.groovy"—— 没这行,你在build.gradle里按Ctrl+B可能触发的是 Java 编译器,不是 Gradle
最容易被忽略的一点:项目根目录下必须真实存在 gradlew 或 gradlew.bat。很多团队 gitignore 了 wrapper 脚本,这时候你得先手动补上,或者确认本地 gradle -v 版本和 buildscript.classpath 里的 AGP 版本严格匹配——查 Android 官方映射表比猜快得多。


















