一 創(chuàng)建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辙培,具體區(qū)別百度下
//這個失敗
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