多项目同质化 gradle配置问题

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 目录的能力

你可能感兴趣的:(gradle,android)