Android 区别:app:assembleRelease和assembleRelease
我的android项目中有多个模块。如果我使用Android 区别:app:assembleRelease和assembleRelease,android,gradle,gradlew,Android,Gradle,Gradlew,我的android项目中有多个模块。如果我使用:app:assembleerelease发布apk,它会工作,但当我使用assembleerelease发布apk时,它会一直显示错误。我知道我的代码中有错误,但这不是我所质疑的。我只想知道assembleerelease和:app:assembleerelease之间的区别是:app:assembleerelease和assembleerelease之间的区别是assembleerelease在:app:assembleerelease执行app
:app:assembleerelease
发布apk,它会工作,但当我使用assembleerelease
发布apk时,它会一直显示错误。我知道我的代码中有错误,但这不是我所质疑的。我只想知道assembleerelease
和:app:assembleerelease之间的区别是:app:assembleerelease
和assembleerelease
之间的区别是assembleerelease
在:app:assembleerelease
执行app
模块中的assembleerelease
任务
显然,这两个模块的任务图都已正确填充,这意味着Android的:app:assembleerelease
依赖于多模块Gradle项目中用作依赖项的其他模块的assembleerelease
,如果您没有显式地引用您的模块,那么Gradle在默认情况下尝试从根项目的任务图中查找该任务
例如:如果您有多个名为模块1和模块2的模块,那么在评估阶段,Gradle会将每个模块的任务分配到各自的扩展中。这意味着您现在必须将其称为:模块1:task1
和:模块2:task2
这就是为什么assembleerelease
不起作用的原因&:app:assembleerelease
起作用
您可以通过在Android Studio/IntelliJ IDEA中打开“Gradle”窗口来检查任务图
如果查看下图,您可以看到“任务”节点,它在根项目中具有可用的公共任务
在扩展自己的节点时,可以找到其他与模块相关的任务
注意:在安卓系统中,您可以有多个模块,但默认模块始终缩写为app module,而其他模块则被视为library module,从上图中可以看出,这些模块的名称缩写为单个模块的名称,如base、db、domain等(我想您不能在同一个项目中有多个app module).如果我运行:db:assembleerelease
而不是:app:assembleerelease
,会发生什么?它会生成.aar(android存档格式)如果我用:app:assembleerelease
而不是assembleerelease
,为playstore制作一个android apk,而不是assembleerelease
,可以吗?@zihadrizkyef如果你上传到playstore上的apk是模块app
的apk,并且你没有手动操作任务图,可以。