Android多Module分渠道以及引用
做点笔记,配置的东西真的难弄,不记笔记,不要两个星期就能忘光光。项目现在渠道变多了,而且还有代码的区别,之前一直在加module的形式处理,项目列表老长了,就想合并module,以渠道形式处理,不过被上司驳回了,不过学到了点东西,记下笔记。
android {
flavorDimensions "platform"
productFlavors {
publishNonDefault true
lianyun {
dimension 'platform'
}
meizu {
dimension 'platform'
}
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
jniLibs.srcDirs = ['libs']
assets.srcDirs = ['src/main/assets']
res.srcDirs = ['../wp-base/src/main/res']
}
meizu {
java.srcDirs = ['src/meizu/java']
}
lianyun {
java.srcDirs = ['src/lianyun/java']
}
}
}
dependencies {
meizuImplementation fileTree(dir: 'libs', include: ['*.jar'])
lianyunImplementation fileTree(dir: 'libs', include: ['*.jar'])
meizuImplementation project(path: ':xxxx')
lianyunImplementation project(path: ':xxxx')
}
- publishNonDefault true,默认情况下不能生产所有版本的 library,通过设置publishNonDefault为true,可以同时生产所有版本的 library。
- flavorDimensions至少需要定义一个,否则肯定报错(菜得可以,这都不知道),这个是风格,不同风格可以交叉生成多风格,试了下感觉挺恶心的,一堆报错,不想研究了
- Implementation、api等导入其它module的标签都会生成不同渠道的,需要分别添加
dependencies {
lianyunApi project(path: ':xxxx')
}
其它module引用分渠道的module需要在gradle里面配置相应的渠道,用上面的方式引用,参考了这篇文章,这篇文章区分了release和debug,实际上没必要,直接引用就好了,关键是lianyunApi,如果是lianyunReleaseApi,也许就需要用这个大佬的方式处理,没试过。