module依赖最大的问题在于路径管理,每个团队成员check到本地时的路径不一样,这样每个人的配置就不一样,每次更新settings.gradle时都编译都出现找不到module的情况。 现在采用统一定义路径,这样更新代码后只需要修改一个地方就行。
1.在gradle.properties中定义module属性变量
#主干代码引用module的位置是../../library/
#分支代码引用module的位置../../../library/
LIBRARY_PATH=../../library/
# 1表示引用module代码 0表示引用aar文件
DEPENDENCIES_MODULE=0
2.settings.gradle里的library路径采用变量引用的形式。
方案1:路劲定义在gradle.properties中,settings.gradle中引用
def libraryPath = LIBRARY_PATH
project(':nuwa').projectDir = new File(libraryPath + 'Nuwa/trunk/nuwa')
方案2:直接在settings.gradle中定义变量
def libraryPath = '../../../library/'
project(':nuwa').projectDir = new File(libraryPath + 'Nuwa/trunk/nuwa')
方案3:settings.gradle 中动态判断
def isTrunk = rootProject.projectDir.absolutePath.indexOf("mallapp/trunk")
def libraryPath = isTrunk > 0 ? LIBRARY_TRUNK_PATH : LIBRARY_BRANCHE_PATH
project(':nuwa').projectDir = new File(libraryPath + 'Nuwa/trunk/nuwa')
3.aar和module动态切换,脚本参考【android 库依赖管理之一aar依赖】中的buildsystem/util.gradle
//是否依赖形式是module
boolean depModule = rootProject.ext.isDepModule();
// compile project(path: ':nuwa')
if(depModule) {
compile project(':applogin')
compile project(':appcashier')
compile project(':kidim')
compile project(':kidgroupchat')
compile project(':kidpush')
}
//动态添加aar aars/default目录下的aar是一直存在的 aars目录下的是替换module用的
rootProject.ext.addAARLibs(project, depModule);