android-studio - Android Studio shell 脚本构建配置独立运行,但不作为 Windows 上的前置步骤
问题描述
我正在尝试在 Android Studio 中运行 Flutter 应用程序,但在此之前,我需要将一些文件从一个目录复制到另一个目录。所以我创建了以下copy_webenv.cmd
Windows 脚本:
xcopy webenv\%1 web\ /E/Y
然后我在 Android Studio 中创建了一个 Shell Script 构建配置,它使用一个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 studio中的一个错误。要解决此问题,您可以改用 gradle 任务或使用外部工具。
没有 Gradle 任务
如果您不能为您的用例使用 gradle 任务,那么您可以在选项中使用Run External tool
该Before 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 系统构建的东西。
- 您可能还可以使用构建变体
推荐阅读
- android - Android Recycler View(网格布局管理器)
- php - Laravel 8:多选选项发送空请求
- php - 是的,我在 wordpress edit.php 中面临一个问题
- http - 请求标头中的 Sec-Fetch-Mode、Sec-Fetch-Dest、Sec-Fetch-Site 创建 CORS 问题
- google-sheets - 计算相关复选框
- python - 在 VSCode 中运行脚本时找不到 bson 模块,在终端的相同 conda 环境中工作正常
- html - 烧瓶 | HTML 不呈现通过 render_template 发送的数据
- google-cloud-firestore - Firestore add 为两个文档生成相同的文档 ID?
- r - 如何将多元丰度矩阵转换为R中的出现表?
- html - 位置固定在子元素中,但同步父 x 滚动与子元素左侧位置