我的android项目中有多个模块。如果我使用:app:assembleRelease
做一个发布apk,但是我用assembleRelease
做一个发布apk时,它总是显示错误。我知道我的代码中有错误,但这不是我要问的问题。我只想知道assembleRelease
和:app:assembleRelease
答案 0 :(得分:2)
:app:assembleRelease
和assembleRelease
之间的区别在于,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中打开“成绩”窗口来检查任务图。
如果您查看下面的图像,则可以看到“任务”节点,该节点在根项目中具有可用的常见任务。
在扩展它自己的节点时可以找到其他与模块相关的任务。
请注意 :在android中,您可以有多个模块,但默认模块始终缩写为应用程序模块,而其他模块则视为库模块,并以的名称缩写 。上方的图片中的单个模块,如基础,数据库,域等。(我猜你不能在同一项目中有多个应用程序模块)。