首页 > 解决方案 > :app:assembleRelease 和 assembleRelease 之间的区别

问题描述

我的 android 项目中有多个模块。如果我用它制作了一个发布 apk,:app:assembleRelease但是当我用它制作一个发布 apk 时,assembleRelease它一直显示错误。我知道我的代码中有错误,但这不是我要质疑的。我只想知道assembleRelease和有什么区别:app:assembleRelease

标签: androidgradlegradlew

解决方案


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

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

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


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

如果您查看下图,您可以看到 Tasks 节点,其中包含在根项目中可用的常见任务。

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

Gradle 任务图

请注意:在 android 中,您可以拥有多个模块,但您的默认模块始终缩写为 app 模块,而其他模块则被视为库模块,这些模块由上图中的单个模块的名称(如 base、db、domain 等)缩写(您可以我猜在同一个项目中没有多个应用程序模块)


推荐阅读