:app:assembleRelease和assembleRelease之间的区别

时间:2020-04-02 11:44:35

标签: android gradle gradlew

我的android项目中有多个模块。如果我使用:app:assembleRelease做一个发布apk,但是我用assembleRelease做一个发布apk时,它总是显示错误。我知道我的代码中有错误,但这不是我要问的问题。我只想知道assembleRelease:app:assembleRelease

有什么区别

2 个答案:

答案 0 :(得分:2)

:app:assembleReleaseassembleRelease之间的区别在于,assembleRelease执行每个模块的assembleRelease任务,而:app:assembleRelease执行以下命令中的assembleRelease任务app模块。

很显然,两者的任务图都正确填充,这意味着Android的:app:assembleRelease依赖于assembleRelease中用作依赖项的其他模块的:app

答案 1 :(得分:2)

在“多模块Gradle”项目中,如果没有明确引用模块,则默认情况下,Gradle尝试从根项目的“任务”图中查找该任务。

例如:如果您有多个名为 module1 module2 的模块,则Gradle在评估阶段会将每个模块的任务分配到自己的扩展名。意味着您现在必须将其称为 :module1:task1 :module2:task2

这就是assembleRelease不起作用和:app:assembleRelease起作用的原因。


您可以通过在Android Studio / IntelliJ IDEA中打开“成绩”窗口来检查任务图。

如果您查看下面的图像,则可以看到“任务”节点,该节点在根项目中具有可用的常见任务。

在扩展它自己的节点时可以找到其他与模块相关的任务。

Gradle Task Graph

请注意 :在android中,您可以有多个模块,但默认模块始终缩写为应用程序模块,而其他模块则视为库模块,并以的名称缩写 。上方的图片中的单个模块,如基础,数据库,域等。(我猜你不能在同一项目中有多个应用程序模块)