我的android项目中有多个模块。如果我使用:app:assembleRelease
进行发布apk,但是当我使用assembleRelease
进行发布apk时,它仍然显示错误。我知道我的代码中有错误,但这不是我要问的问题。我只想知道assembleRelease
和:app:assembleRelease
:app:assembleRelease
和assembleRelease
之间的区别在于assembleRelease
执行每个模块的assembleRelease
任务,而:app:assembleRelease
执行assembleRelease
模块中的app
任务。
显然,这两个任务图均正确填充,这意味着Android的:app:assembleRelease
取决于在assembleRelease
中用作依赖项的其他模块的:app
。
在多模块Gradle项目中,如果您未引用模块显式,则默认情况下,Gradle尝试从根项目的Tasks图中找到该任务。
例如:如果您有多个名为module1和module2的模块,则在评估阶段,Gradle会将每个模块的任务分配到它们自己的扩展中。意味着您现在必须将其引用为:module1:task1
&:module2:task2
这是assembleRelease
不起作用和:app:assembleRelease
起作用的原因。
您可以通过在Android Studio / IntelliJ IDEA中打开“ Gradle”窗口来检查任务图。
如果您查看下面的图像,则可以看到在根项目中具有常用任务的任务节点。
虽然在扩展它自己的节点时可以找到其他与模块相关的任务。
[[[注意]]:在android中,您可以有多个模块,但是默认模块始终缩写为app模块,而其他模块则被视为库模块,并以该单个模块的名称(如base,db)缩写,域等来自上图(我猜您在同一项目中不能有多个应用程序模块)。