应用场景 主APP包括module1 ,module2, base-library三个模块,对module1 ,module2,组件化开发。
1、在工程跟目录创建config.gradle,用于保存共有参数配置
ext{
// false :组件模式 。true : 集成模式
isModule =true;
android = [
compileSdkVersion :29,
buildToolsVersion :"29.0.2",
minSdkVersion :19,
targetSdkVersion :29,
versionCode :1,
versionName :"1.0"
]
appId = ["app" :"com.lily.lsn11_router",
"module1" :"com.lily.module1",
"module2" :"com.lily.module2"
]
}
2、在工程 build.gradle 引用config.gradle 在开头写上这句
applyfrom:"config.gradle"
3、模块app build.gradle 使用config.gradle的参数
applyplugin:'com.android.application'
def cfg = rootProject.ext.android
def appId = rootProject.ext.appId
android{
compileSdkVersion cfg.compileSdkVersion
buildToolsVersion cfg.buildToolsVersion
defaultConfig{
applicationId appId["app"]
minSdkVersion cfg.minSdkVersion
targetSdkVersion cfg.targetSdkVersion
versionCode cfg.versionCode
versionName cfg.versionName
... }
}
dependencies{
if(isModule){
implementation project(path:':module1')
implementation project(path:':module2')
}
}
4、module1 的build.gradle 这么写
if (isModule) {
applyplugin:'com.android.library'
}else{
applyplugin:'com.android.application'
}
def cfg = rootProject.ext.android
def appId = rootProject.ext.appId
android{
compileSdkVersion cfg.compileSdkVersion
buildToolsVersion cfg.buildToolsVersion
defaultConfig{
minSdkVersion cfg.minSdkVersion
targetSdkVersion cfg.targetSdkVersion
versionCode cfg.versionCode
versionName cfg.versionName
testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"
buildConfigField("boolean","isModule",String.valueOf(isModule))
if (!isModule){
applicationId appId["module1"]
}
sourceSets{
main{
//组件模式下 使用不同的资源文件
if (!isModule){
manifest.srcFile'src/main/module/AndroidManifest.xml'
java.srcDirs'src/main/module/java','src/main/java'
}else{
manifest.srcFile'src/main/AndroidManifest.xml'
}
}
}
module2 类似module1写法