:app:assembleRelease 和 assembleRelease 之间的区别

zih*_*yef 11 android gradle gradlew

我的 android 项目中有多个模块。如果我用它制作一个发行版 apk,:app:assembleRelease它可以工作,但是当我用它制作一个发行版 apk 时,assembleRelease它会一直显示错误。我知道我的代码中有错误,但这不是我质疑的问题。assembleRelease我只是想知道和之间有什么区别:app:assembleRelease

Jee*_*ede 12

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

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

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


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

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

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

Gradle 任务图

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


Gio*_*oli 6

:app:assembleRelease和的区别在于assembleReleaseassembleRelease执行assembleRelease各个模块的任务,同时:app:assembleRelease执行模块assembleRelease内的任务app

显然,两者的任务图都已正确填充,这意味着:app:assembleReleaseAndroid 依赖assembleRelease:app.