android-gradle组装和gradle构建任务之间有什么区别?

如果我没有记错,那么gradle assemblegradle assembleDebuggradle assembleRelease确实可以运行,但是我相信gradle build也可以做到相同,那么两者之间有何不同?

Humble Student asked 2020-02-29T11:40:45Z
3个解决方案
65 votes

组装将构建您的工件,并且构建将通过附加检查来组装您的工件。

assemble取决于lint,因此testassemble的超集

您可以使用assemble标志查看将要执行的任务。 例如

gradlew build --dry-run

您将看到,除了assemble,还将执行linttest

David Medenjak answered 2020-02-29T11:41:28Z
5 votes

build

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

build实际上是assemble + check(而checktest +任何整理任务)。

Laurence Gonsalves answered 2020-02-29T11:41:52Z
4 votes

确实,根据Build -> Make Project看来,assembleDebug:app:assembleDebug的超集,包括测试。但是(!)从我的短暂经验来看,事实并非如此。

所以我每次干净运行后,使用带有--scan标志的gradle包装器在命令行中运行这2条命令。这是比较:

  1. 所需的构建文件:
    • 运行Build -> Make Project后,我得到了所有想要的构建文件-assembleDebug:app:assembleDebug文件。
    • 运行Build -> Make Project之后,我没有任何这些文件。
  2. 根据扫描运行的任务数量:
    • Build -> Make Project-109个任务
    • Build -> Make Project-91个任务
  3. 根据扫描的依赖项数量:
    • Build -> Make Project-172从20配置
    • Build -> Make Project-104来自18种配置
    • 似乎它们不同的原因是,在我的3个子项目中的2个子项目(不是Java库,而是应用程序)中的Build -> Make Project中,还有一个名为assembleDebug的配置。:app:assembleDebug中缺少此配置。
  4. 值得一提的是,当我在任务列表中进行搜索时,好像Build -> Make Project没有调用assembleDebug任务,而:app:assembleDebug没有调用buildDebug任务。
  5. 在这种情况下要提到的最后一个有趣的事情是,当我从Android Studio运行构建时(Build -> Make Project),我在扫描中看到实际运行的命令是assembleDebug,更具体地说,它运行了:app:assembleDebug

如您所见,我本人并不真正了解这些差异,但这就是我发现的。 如果有人可以向我和其他在这里阅读的用户解释它,那可能会很棒:)谢谢!

Doron Go answered 2020-02-29T11:43:15Z
translate from https://stackoverflow.com:/questions/44185165/what-are-the-differences-between-gradle-assemble-and-gradle-build-tasks