Android Studio shell 脚本构建配置自行运行,但不作为 Windows 的前置步骤
Android Studio shell script build configuration runs on its own but not as a pre-step on Windows
我正在尝试在 Android Studio 中 运行 一个 Flutter 应用程序,但在此之前,我需要将一些文件从一个目录复制到另一个目录。所以我创建了以下 copy_webenv.cmd
Windows 脚本:
xcopy webenv\%1 web\ /E/Y
然后我在 Android Studio 中创建了一个 Shell 脚本构建配置,运行 使用 dev
参数设置此脚本:
当我 运行 这个构建配置独立运行时,它完美运行:
(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 构建配置的“启动前”步骤时:
和运行这个构建配置,我得到以下错误:
Error running 'copy webenv dev'
Executable is not specified
我在任何地方都看不到任何可执行字段。
看起来这是 android 工作室中的一个错误。
要解决此问题,您可以改用 gradle 任务或使用外部工具。
没有Gradle任务
如果您不能为您的用例使用 gradle 任务,那么您可以在 Before Launch
选项中使用 Run External tool
选项。
.
然后在工具配置中,您可以只使用 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 copy 任务会更好。这样一来,它将立即与平台无关并且 gradle 也可以进行优化。
- 实际上,如 this answer 所示,使用 gradle 将其挂接到构建系统中会更好。这样一来,其他人在第一次检查项目时会更容易,并且还会简化使用某些 CI 系统构建的内容。
- 你也可以使用 build variants
我正在尝试在 Android Studio 中 运行 一个 Flutter 应用程序,但在此之前,我需要将一些文件从一个目录复制到另一个目录。所以我创建了以下 copy_webenv.cmd
Windows 脚本:
xcopy webenv\%1 web\ /E/Y
然后我在 Android Studio 中创建了一个 Shell 脚本构建配置,运行 使用 dev
参数设置此脚本:
当我 运行 这个构建配置独立运行时,它完美运行:
(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 构建配置的“启动前”步骤时:
和运行这个构建配置,我得到以下错误:
Error running 'copy webenv dev'
Executable is not specified
我在任何地方都看不到任何可执行字段。
看起来这是 android 工作室中的一个错误。 要解决此问题,您可以改用 gradle 任务或使用外部工具。
没有Gradle任务
如果您不能为您的用例使用 gradle 任务,那么您可以在 Before Launch
选项中使用 Run External tool
选项。
然后在工具配置中,您可以只使用 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 copy 任务会更好。这样一来,它将立即与平台无关并且 gradle 也可以进行优化。
- 实际上,如 this answer 所示,使用 gradle 将其挂接到构建系统中会更好。这样一来,其他人在第一次检查项目时会更容易,并且还会简化使用某些 CI 系统构建的内容。
- 你也可以使用 build variants