Windows下Android Studio Shell脚本配置单独可运行但作为Flutter前置步骤报错
报错原因
Android Studio 中将独立的 Shell Script 构建配置添加到「Before launch」启动前步骤时,会丢失独立运行时的默认 shell 执行上下文,无法自动识别 .cmd 脚本对应的执行程序,因此抛出可执行文件未指定的报错。
解决方案
这里提供两种稳定可行的解决方法,任选一种即可:
方法1:修改现有Shell Script配置,明确指定执行程序
- 打开你创建的
copy webenv dev对应的Shell Script构建配置编辑页 - 点击展开页面下方的Advanced options(高级选项),找到隐藏的Executable(可执行文件)输入框
- 输入框内填入cmd.exe的完整路径:
C:\Windows\System32\cmd.exe - 在Script options(脚本参数)输入框中补充参数:
/c 你的脚本完整路径\copy_webenv.cmd dev,例如/c D:\project\copy_webenv.cmd dev - 保存配置后重新运行Flutter构建即可
方法2:替换为外部工具启动步骤(更稳定,推荐)
直接删除原来添加的Shell Script前置步骤,改为添加外部工具执行,不会出现上下文丢失问题:
- 打开Flutter构建配置编辑页,拉到最下方的Before launch区域
- 点击区域左上角的+号,选择「Run External Tool」,在弹出的窗口中再次点击+号新建外部工具
- 按如下规则填写配置项:
- Name:自定义名称,例如
copy webenv dev - Program:填入
C:\Windows\System32\cmd.exe - Arguments:填入
/c xcopy webenv\dev web\ /E/Y(如果要保留脚本的参数扩展性也可以填/c copy_webenv.cmd dev) - Working directory:选择你的项目根目录(即
copy_webenv.cmd所在的目录)
- Name:自定义名称,例如
- 保存配置,将原来的Shell Script前置步骤删除,保留刚新建的外部工具步骤即可
注意事项
- 如果你的路径中包含空格或中文,需要用双引号将对应路径包裹
- 如果是32位Windows系统,可将
C:\Windows\System32\cmd.exe替换为C:\Windows\SysWOW64\cmd.exe
内容的提问来源于stack exchange,提问作者Sebastien
相关产品推荐
相关产品推荐

