android - Gradle Exec 任务从命令行构建运行,但不从 Android 构建运行

标签 android python unix gradle groovy

我正在尝试从 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/

相关文章:

linux - 如何使用 sed 按指定顺序提取行?

linux - 在 SED 中加入行中断条件

linux - 如何通过数值约束过滤 UNIX stdout?

python - NLTK:如何遍历名词短语以返回字符串列表?

python - python 中的基本递归遇到问题

python - 如何在 Python 3 的 exec 命令中停止执行?

android - 将上下文从服务传递到非 Activity 类

android - Kotlin 如何调用扩展函数

android - 无法解析 : play-services-phenotype with Firebase Remote Config and Firebase Performance Monitoring

android - Android 是否使用 minSdkVersion<24 对 Java 8 Iterable.forEach() 进行脱糖?