as中如果出现多个app同质化的情况时,可考虑抽取各种基础模块供不同的 application module 依赖,这里在使用AS终端编译项目时,发现assembleDebug/assembleRelease 打包会报错,分析发现正常和异常情况下的gradle 构建过程不同
这里注意点是:
编译环境 as 2.3.3[之前为了能够看到as在编译时期将临时编译的输出文件夹 --exploaded aar 文件夹 而在gradle.properties 中设置了 android.enableBuildCache=false]
这里只需要将这行配置注释 #android.enableBuildCache=false,
即可改变as的构建过程[没想到是这个配置影响到了gradle的构建过程]
另外 在正常编译情况下会打出不同app对应的全渠道包!
本意是只打指定的app全渠道包,而不是所有的application module下的渠道包都被编译出来,浪费时间和性能!
这里的解决方案是:
决定构建的上游是setting.gradle ,既然也是gradle那么也必然支持从 gradle.properties 中获取参数 ,因此在 gradle.properties中配置module 参数,对应value为app的具体nameId
配置改为如下:
if(MODULE.contains("ydt")) {
include ':util',
':framework',
':update',
':widget',
':net',
':xrecyclerview',
':refresh-layout',
':loadinglayout',
':ydt', // 当前module nameId 对应的编译app module
':resouce'
} else {
include ':app', //另一个app module
':util',
':framework',
':update',
':widget',
':net',
':xrecyclerview',
':refresh-layout',
':loadinglayout',
':resouce'
}
总结对于上面的两个问题可以通过最后的 module 参数配置并在setting.gradle端解决,构建过程的差异即可避免也可同时具有 展示build 临时文件 exploaded aar 目录的能力