我的Android项目中有多个模块。如果我使用:app:assembleRelease
发布apk,则可以,但是当我使用assembleRelease
发布apk时,则显示错误。我知道我的代码中有错误,但这不是我要问的问题。我只想知道assembleRelease
和:app:assembleRelease
有什么区别
最佳答案
在“多模块Gradle”项目中,如果未明确引用模块,则默认情况下,Gradle尝试从根项目的“任务”图查找该任务。
例如:如果您有多个名为 module1 和 module2 的模块,则在评估阶段,Gradle会将每个模块的任务分配在各自的扩展中。意味着您现在必须将其称为 :module1:task1
和 :module2:task2
这就是assembleRelease
不起作用和:app:assembleRelease
起作用的原因。
您可以通过在Android Studio / IntelliJ IDEA中打开“成绩”窗口来检查任务图。
如果查看下面的图像,则可以看到“任务”节点,这些节点在根项目中具有可用的常见任务。
虽然还有其他与模块相关的任务,可以在扩展它自己的节点内找到。
请注意,:在android中,您可以有多个模块,但是默认模块始终缩写为app模块,而其他模块则被视为库模块,按上面图像中各个模块的名称(如base,db,domain等)缩写。我猜你不能在同一个项目中有多个应用模块。