1、统一管理SDK以及依赖的版本
gradle是用groovy语言编写的,也可以在gradle中定义变量打印值输出,我们可以在项目中新建一个gradle文件来定义sdk以及应用包名等。
ext {
//false:组件模式 true:集成模式
isModule=false
android = [
compileSdkVersion: 27,
minSdkVersion : 19,
targetSdkVersion : 27,
versionCode : 1,
versionName : "1.0"
]
appId = [
"app" : "com.wkk.myrouter",
"library1": "com.wkk.library1",
"library2": "com.wkk.library2"
]
}
2、配置Library的状态
组件化状态Library是application状态,在集成模式其为library状态
//根据isModule切换组件和继承模式
if (isModule) {
apply plugin: 'com.android.library'
} else {
apply plugin: 'com.android.application'
}
3、配置包名
如果要独立运行就必须有一个appId来标识
if (!isModule) {
applicationId appId["library1"]
}
这里需要先把config.gradle注入,在project的build文件中填加
apply from:"config.gradle"
在组件module的build文件中填加
def cfg = rootProject.ext.android
def appId = rootProject.ext.appId
其中cfg和appId为自定义的变量。
4、资源文件配置
要独立运行就需要在AndroidManifest文件中配置application和laucher,我们需要在组件的build文件中配置AndroidManifest文件的路径,此处的AndroidManifet文件要与组件状态的AndroidManifest区分开来。
sourceSets {
main {
//组件化与继承模式使用不同的AndroidManifest文件
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'
}
}
}
以上基本可以自由切换组件模式和集成模式。
另:在开发过程中需要获取组件状态,我们可以在BuildConfig文件中自动生成isModule
只需在build文件中填加
buildConfigField("boolean","isModule",String.valueOf(isModule))
————————————————
原文链接:https://blog.csdn.net/wang_k516/article/details/90523530