首页 > 解决方案 > Android Studio shell 脚本构建配置独立运行,但不作为 Windows 上的前置步骤

问题描述

我正在尝试在 Android Studio 中运行 Flutter 应用程序,但在此之前,我需要将一些文件从一个目录复制到另一个目录。所以我创建了以下copy_webenv.cmdWindows 脚本:

xcopy webenv\%1  web\ /E/Y

然后我在 Android Studio 中创建了一个 Shell Script 构建配置,它使用一个dev参数运行这个脚本:

Shell 脚本构建配置

当我自己运行这个构建配置时,它可以完美运行:

(c) 2016 Microsoft Corporation. All rights reserved.

C:\Users\sarbogast\dev\buzzwordbingo>C:\Users\sarbogast\dev\buzzwordbingo\copy_webenv.cmd dev

C:\Users\sarbogast\dev\buzzwordbingo>xcopy webenv\dev  web\ /E/Y
webenv\dev\favicon.png
webenv\dev\index.html
webenv\dev\icons\Icon-192.png
webenv\dev\icons\Icon-512.png
4 File(s) copied

但是当我尝试将此构建配置添加到我的 Flutter 构建配置的“启动前”步骤中时:

Flutter 构建配置

并运行此构建配置,我收到以下错误:

在此处输入图像描述

Error running 'copy webenv dev'
Executable is not specified

我在任何地方都看不到任何可执行字段。

标签: android-studiobatch-fileflutter-web

解决方案


看起来这是android studio中的一个错误。要解决此问题,您可以改用 gradle 任务或使用外部工具。

没有 Gradle 任务

如果您不能为您的用例使用 gradle 任务,那么您可以在选项中使用Run External toolBefore Launch选项。

运行外部工具选项.

然后在工具配置中,您可以将cmd其用作程序和/c copy_webenv.cmd dev参数。

外部工具配置

使用 Gradle 任务

如果您可以使用 gradle 任务,那么您需要将其添加到您的build.gradle

task runCopyScript(type: Exec) {
    commandLine 'cmd', '/c', 'copy_webenv.cmd', 'dev'
}

然后当gradle同步后,你可以在android studio的编辑器中点击它旁边的播放按钮来运行它,这样它就被添加为运行配置了。

然后您可以将该配置添加为“启动前”。

一些旁注:

  • 实际上,为此使用gradle 复制任务会更好。这样,它将立即与平台无关,并且 gradle 也可以进行优化。
  • 如this answer所示,最好在构建系统中使用 gradle 来挂钩它。这样一来,其他人在第一次检查项目时会更容易,并且还会简化使用某些 CI 系统构建的东西。
  • 您可能还可以使用构建变体

推荐阅读