一 创建Module
-
主Module app 地图Module map 相机Module camera,基础Module commonlib
二. 添加全局控制文件
ext {
isAlone = false;//false:作为Lib组件存在,true:作为application存在
}
build.gradle 添加饮用
三. 配置Module 的gradle文件
- 是否是组建形式
//控制组件模式和集成模式
if (rootProject.ext.isAlone) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
if (rootProject.ext.isAlone) {
//组件模式下设置applicationId
applicationId "com.example.camera"
}
//是否设置独立module模块
sourceSets {
main {
if (rootProject.ext.isAlone) {
manifest.srcFile 'src/main/module/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/module/java']
res.srcDirs = ['src/main/res', 'src/main/module/res']
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
}
// jniLibs.srcDirs = ['libs']
}
}
最后应用commonlib
implementation project(':commonlib')
四. 集成关系
- camera,map 都需要继承 commonlib
- app
implementation project(':commonlib')
if (!rootProject.ext.isAlone) {
implementation project(':camera')
implementation project(':map')
}
说明:
1.commonlib中 不要使用implementation ,要用compile,具体区别百度下
//这个失败
implementation 'com.android.support:design:26.1.0'
//这个可以
compile 'com.android.support:design:26.1.0'
- multiDexEnabled 一定要放在app module模块下,不能放在commonlib中
- 遇到莫名其妙问题可以尝试打开或关闭instant run
详细的可以下载demo跑一下 很简单 https://git.coding.net/Lrxc/LrxcModularization.git
大神文章:https://mp.weixin.qq.com/s/4dc38cpZKCfxWxxRdUQfTQ