我正在尝试从 Exec
类型的 Gradle 任务执行 python 脚本。我的主要构建任务依赖于此任务。对于此示例,我们将其称为我的构建任务 assembleProjectDebug
。让我们将示例简化为:
tasks.create(name: newFooTask, type: Exec) {
commandLine "python", "doSomething.py"
}
tasks[assembleProjectDebug].dependsOn(newFooTask)
如果我从终端运行 ./gradlew assembleProjectDebug
,我的 python 脚本就会执行,一切都很好。但是,如果我尝试使用 Build -> Make Project
从 Android Studio 进行构建,我的 python 脚本将不会执行。
我还可以确认我当前选择的构建变体设置为 projectDebug
,并且还可以确认从 Android Studio 构建时,:app:assembleProjectDebug
出现在该日志让我相信 assembleProjectDebug 任务已经或将会被执行(我可能是错的)。
为了简洁起见,我还省略了在任务中分配环境变量的位置,该环境变量将 $PATH 变量指向 python exec 的位置。
除了我搞乱了子进程的正确 $PATH 变量的分配之外,是否有任何原因导致命令行构建将执行此任务,但 Android Studio 中的构建却不会执行此任务?
最佳答案
您可能需要设置 workingDir关于 Exec 任务
例如:
tasks.create(name: newFooTask, type: Exec) {
commandLine "python", "doSomething.py"
workingDir = projectDir
}
关于android - Gradle Exec 任务从命令行构建运行,但不从 Android 构建运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076700/