You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Gradle的commandLine调用自定义CLI程序失败

问题解决:Gradle执行bash脚本找不到npm全局命令(M1 macOS)

问题场景

  • 环境:搭载M1芯片的macOS,运行ARM版Android Studio
  • 项目中定义的Gradle minifyJs 任务:
import org.apache.tools.ant.taskdefs.condition.Os
task minifyJs {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        exec {
            commandLine 'cmd', '/c', "scriptFolder\\minify.bat"
        }
    } else {
        exec {
            commandLine 'sh',  "scriptFolder/minify.bash"
        }
    }
}
  • 执行任务时报错:
SurveyV2/minify.bash: line 2: uglifyjs-folder: command not found

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* Where:
Build file 'some/path/build.gradle' line: 61

* What went wrong:
A problem occurred evaluating project ':ProjectName'.
> Process 'command 'sh'' finished with non-zero exit value 127
  • 已知现象:
    • 在Android Studio终端标签页和macOS本地终端执行该脚本均正常
    • 注释该Gradle任务后,构建可正常完成
    • 将commandLine中的脚本替换为ls、echo等系统命令时可正常执行

解决办法

1. 直接使用命令的绝对路径

在终端执行which uglifyjs-folder,得到命令的绝对路径(比如/opt/homebrew/bin/uglifyjs-folder),然后修改minify.bash脚本,把uglifyjs-folder替换成这个绝对路径。

2. 在Gradle任务中注入完整PATH环境变量

Gradle执行exec任务时的默认PATH不包含Homebrew的路径(M1上Homebrew默认路径是/opt/homebrew/bin),可以在任务中手动注入用户的PATH:

else {
    exec {
        commandLine 'sh', "scriptFolder/minify.bash"
        // 注入当前用户的PATH环境变量
        environment 'PATH', System.getenv('PATH')
    }
}

如果上述方式无效,也可以直接把Homebrew的bin路径加到PATH最前面:

environment 'PATH', "/opt/homebrew/bin:" + System.getenv('PATH')

3. 让Android Studio继承系统环境变量

如果Android Studio是从Launchpad启动的,它不会加载~/.zshrc或~/.bash_profile里的环境配置。改成从终端启动Android Studio:

open -a "Android Studio"

这样Android Studio会继承终端的PATH,Gradle执行时就能找到全局npm命令。

原因说明

M1芯片的macOS上,Homebrew默认安装在/opt/homebrew/bin,这个路径会被添加到用户shell的PATH中(通过~/.zshrc或~/.bash_profile)。但Gradle的exec任务默认使用的环境变量PATH不包含这个路径,所以找不到通过npm全局安装的uglifyjs-folder命令;而终端中因为加载了shell配置,PATH包含该路径,因此脚本可以正常执行。

内容的提问来源于stack exchange,提问作者h3dkandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:32:42