-
Notifications
You must be signed in to change notification settings - Fork 75
2、通过 submodule 引入框架 基本配置
imyyq edited this page Sep 21, 2020
·
3 revisions
要么通过远程仓库引入框架,要么通过 submodule 引入框架源码,二选一,要通过远程仓库引入,详见: Wiki - 0、通过远程仓库引入框架,如果是你是通过远程仓库引入的,那么本篇和(Wiki - 1、通过 submodule 引入框架)都不用看了。
include ':MVVMArchitecture'
拷贝 MVVMArchitecture/mvvm-config.gradle.template 到项目根目录,重命名为 mvvm-config.gradle。 配置 SDKVersion,IncludeLib 指定你需要包含哪些库。
/**
* 决定需要开启哪些库的使用,有些库是有关联的,比如 bindingCollection 引用了 recyclerView。
* 因此即使禁用掉 recyclerView,开启 bindingCollection,也会导入 recyclerView
*
* 禁用掉的库,就不能使用该库的内容,正常来说在 release 打包的时候会从包中移除
*/
ext {
IncludeLib = [
// 内存泄露
leakCanary2 : true,
// 应用前后台监听
lifecycleProcess : false,
// 通常来说以上都需要为 true
recyclerView : false,
room : false,
roomRxJava2 : false,
retrofit2 : false,
retrofit2RxJava2 : false,
glide : false,
// 权限申请
livePermissions : false,
// 内嵌加载中
loadSir : false,
rxJava2 : false
]
SDKVersion = [
compileSdkVersion : 29,
minSdkVersion : 21,
targetSdkVersion : 29
]
}
都是 Google 官方的库居多,具体是什么库,大部分见名知意,如果还不懂是什么库,可查看 dependencies.gradle 文件。
buildscript {
// 注意:以下文件的声明顺序不能乱
apply from: 'mvvm-config.gradle'
apply from: 'MVVMArchitecture/config.gradle'
apply from: 'MVVMArchitecture/dependencies.gradle'
addRepository(repositories)
dependencies {
// 根据 AS 的版本而不同
classpath "com.android.tools.build:gradle:x.x.x"
classpath Deps.kotlinPlugin
}
}
allprojects {
addRepository(repositories)
}
// 有需要的话,这里可以强制使用某个版本的库,通常没必要配置
configurations.all {
resolutionStrategy {
force 'androidx.annotation:annotation:1.1.0',
'androidx.arch.core:core-common:2.0.1',
'androidx.arch.core:core-runtime:2.0.1',
'androidx.core:core:1.0.1'
}
}
...
// Kotlin 需要增加 kapt plugin 才可以使用 DataBinding
apply plugin: 'kotlin-kapt'
android {
// 指定 sdk 相关信息,上面的第 2 步已经配置了,这里直接使用
compileSdkVersion SysConfig.compileSdkVersion
defaultConfig {
applicationId "com.xxxx.xxxxx" // 你的应用包名
minSdkVersion SysConfig.minSdkVersion
targetSdkVersion SysConfig.targetSdkVersion
...
}
// Gradle Plugin 4.0 及以上
buildFeatures{
dataBinding = true
viewBinding = true
}
// Gradle Plugin 4.0 以下
dataBinding {
enabled = true
}
viewBinding {
enabled = true
}
// 以上配置二选一,其中 viewBinding 是你有不需要用 DataBinding 的类时,才需要开启,不想用 DataBinding,可只继承自 ViewBindingBaseXxxxx 基类
// 开启 Java 8 支持
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "${JavaVersion.VERSION_1_8}"
}
}
dependencies {
...
// 将 appcompat,core-ktx,constraintlayout,kotlin 等项目创建时默认生成的都去掉,只留下 test 和 MVVMArchitecture 即可
implementation project(path: ':MVVMArchitecture')
...
}
此时基本配置已经完成了,默认拥有的能力除了配置文件中值为 true 的属性,还有如下默认开启的:
// 这两个是创建项目默认就有的库
api Deps.kotlinStdLib
api Deps.kotlinKTX
// 兼容库
api Deps.appcompat
// 约束布局
api Deps.constraintLayout
// 侧滑布局,是用来界面侧滑退出的,因为只有一个类,就不做可配置去除了
api Deps.slidingPaneLayout
// 以下三个是为了使用最新的特性
api Deps.activity
api Deps.activityKTX
api Deps.fragment
// 在 Lifecycles 中使用协程,视图销毁则自动取消
api Deps.lifecycleRuntimeKTX
// 在 LiveData 中使用协程
api Deps.lifecycleLiveDataKTX
// 简化 Fragment 的 API 调用,同时通过 viewModels 扩展方法创建 vm 来的非常容易
api Deps.fragmentKTX
// 在 vm 中使用协程,视图销毁自动取消
api Deps.viewModelKTX
// 使用 Java8 替换 lifecycleCompiler,让 vm 可以感知 v 生命周期
api Deps.lifecycleJava8
以上默认开启的包都非常的小,都是用得上的,所以不用担心引入了许多无用的,Google 分包很细致,比如 lifecycleJava8 就只有一个类,专门完成特定的功能。
好了,基本配置已经完成了,现在你已经可以使用框架了。