android-gradle组装和gradle构建任务之间有什么区别?
如果我没有记错,那么gradle assemble
和gradle assembleDebug
和gradle assembleRelease
确实可以运行,但是我相信gradle build
也可以做到相同,那么两者之间有何不同?
Humble Student asked 2020-02-29T11:40:45Z
3个解决方案
65 votes
组装将构建您的工件,并且构建将通过附加检查来组装您的工件。
assemble
取决于lint
,因此test
是assemble
的超集
您可以使用assemble
标志查看将要执行的任务。 例如
gradlew build --dry-run
您将看到,除了assemble
,还将执行lint
和test
。
5 votes
从build
:
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
build
实际上是assemble
+ check
(而check
是test
+任何整理任务)。
4 votes
确实,根据Build -> Make Project
看来,assembleDebug
是:app:assembleDebug
的超集,包括测试。但是(!)从我的短暂经验来看,事实并非如此。
所以我每次干净运行后,使用带有--scan标志的gradle包装器在命令行中运行这2条命令。这是比较:
- 所需的构建文件:
- 运行
Build -> Make Project
后,我得到了所有想要的构建文件-assembleDebug
和:app:assembleDebug
文件。 - 运行
Build -> Make Project
之后,我没有任何这些文件。
- 运行
- 根据扫描运行的任务数量:
Build -> Make Project
-109个任务Build -> Make Project
-91个任务
- 根据扫描的依赖项数量:
Build -> Make Project
-172从20配置Build -> Make Project
-104来自18种配置- 似乎它们不同的原因是,在我的3个子项目中的2个子项目(不是Java库,而是应用程序)中的
Build -> Make Project
中,还有一个名为assembleDebug
的配置。:app:assembleDebug
中缺少此配置。
- 值得一提的是,当我在任务列表中进行搜索时,好像
Build -> Make Project
没有调用assembleDebug
任务,而:app:assembleDebug
没有调用buildDebug
任务。 - 在这种情况下要提到的最后一个有趣的事情是,当我从Android Studio运行构建时(
Build -> Make Project
),我在扫描中看到实际运行的命令是assembleDebug
,更具体地说,它运行了:app:assembleDebug
。
如您所见,我本人并不真正了解这些差异,但这就是我发现的。 如果有人可以向我和其他在这里阅读的用户解释它,那可能会很棒:)谢谢!