如何在构建任务中执行Gradle子任务" assembleDebug"?

时间:2015-02-19 19:43:53

标签: android android-studio gradle android-gradle

我最近一直在学习关于An​​droid的Gradle系统。我们知道,如果我们放置" gradle任务 - 所有"在命令行中,Gradle将打印出所有可用任务。

我感兴趣的是任务下的子任务列表" assembleDebug"(例如" bundleDebug"," compileDebugNdk"等等)。我认为它们是前面的缩进的子任务。

如果我们运行" assembleDebug"将执行所有这些子任务。任务?如果是这样,那么执行的顺序是什么?如果没有,哪些会被拿起来?

注意:下面的子任务似乎按字典顺序列出。所以我们不能假设它是执行顺序。

enter image description here

2 个答案:

答案 0 :(得分:2)

您在此处发布的输出意味着assembleDebug取决于此处列出的其他任务。确切地确定执行哪个订单任务的最佳方法是,您可以运行gradle :api:assembleDebug -m到"干运行"你的构建。通常" SubTask"这不是通常的术语。相反,我会说assembleDebug取决于这些任务。

答案 1 :(得分:0)

首先,官方的术语不是子任务,而是“任务依赖”。而关于执行顺序,正式是“任务排序”。请参阅official Gradle docs,特别是标题为任务依赖关系和任务顺序的部分。它说:

<块引用>

一个任务可能依赖于其他任务,或者可能被安排为总是在另一个任务之后运行。 Gradle 确保在执行任务时遵守所有任务依赖项和排序规则,以便任务在其所有依赖项和任何“必须在其后运行”的任务都已执行之后执行。

其次,您可以使用 gradle --dry-run :api:assembleDebug(或 -m 作为 --dry-run 的同义词,正如另一个答案所建议的那样)。输出是根据任务排序,而不是字典排序。

注意:注意不要混淆“依赖项”和“任务依赖项”。 “依赖项”本身是构建所需的 Java 依赖项,例如库,您可以使用 gradle api:dependencies 来查看它们。有关 Java 依赖项的详细信息,请参阅 this SO post

相关问题