dependencies.gradle
//配置各个module共用的参数
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'//kotlin语言使用注入框架,dataBinding都需要这个
apply plugin: 'androidx.navigation.safeargs.kotlin'//用于navigation传参的时候一种安全防护,非空,类型判断等。
android {
compileSdkVersion compile_sdk_version
buildToolsVersion build_tools_version
defaultConfig {
minSdkVersion min_sdk_verion
targetSdkVersion target_sdk_version
versionCode lib_version_code
versionName lib_version_name
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
//Java中的配置 生成schema文件,便于查看数据库创建表的详细信息
javaCompileOptions {
annotationProcessorOptions {
//room 的scheme
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
// ARouter的需要配置
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
//kotlin ARouter 的配置方式
kapt {
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
arg("room.schemaLocation": "$projectDir/schemas".toString())
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
dataBinding = true
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
//使用jetPack的组件,会要求jdk 1.8最好,有的时候会遇到报错,需要配置如下,避免target jvm 1.8的那个报错
kotlinOptions {
jvmTarget = "1.8"
// freeCompilerArgs += ["-Xuse-experimental=kotlin.contracts.ExperimentalContracts",]
freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn",]
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//region 平台相关的基础库
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation("androidx.core:core-ktx:1.3.1")
implementation 'androidx.fragment:fragment-ktx:1.2.5'
implementation 'androidx.activity:activity-ktx:1.1.0'
implementation "androidx.constraintlayout:constraintlayout:2.0.1"
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.2.1'
implementation "androidx.viewpager2:viewpager2:1.0.0"
//endregion
//<edit-folder desc="优秀第三方必备框架库">
// Koin for Kotlin
implementation "org.koin:koin-core:$koin_version"
implementation "org.koin:koin-core-ext:$koin_version"
// Koin for AndroidX
implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
implementation "org.koin:koin-androidx-fragment:$koin_version"
implementation "org.koin:koin-androidx-ext:$koin_version"
testImplementation "org.koin:koin-test:$koin_version"
//</edit-folder>
//region jetPack libs
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'//已经废弃
implementation 'androidx.lifecycle:lifecycle-livedata:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
kapt "androidx.lifecycle:lifecycle-common-java8:2.2.0"
implementation 'androidx.room:room-runtime:2.2.5'
implementation 'androidx.room:room-common:2.2.5'
implementation 'androidx.room:room-ktx:2.2.5'
kapt "androidx.room:room-compiler:2.2.5"
implementation 'androidx.paging:paging-runtime:3.0.0-alpha07'
implementation 'androidx.paging:paging-common:3.0.0-alpha07'
implementation 'androidx.work:work-runtime:2.4.0'
implementation 'androidx.work:work-runtime-ktx:2.4.0'
//注意配置navigation版本号的时候,project下的build.gradle的class path也需要同步navigation的版本号配置
implementation "androidx.navigation:navigation-ui:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
implementation "androidx.navigation:navigation-fragment:$navigation_version"
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-runtime:$navigation_version"
//endregion
//ARouter
implementation 'com.alibaba:arouter-api:1.5.0'
kapt 'com.alibaba:arouter-compiler:1.2.2'
//liveData eventBus
implementation 'com.jeremyliao:live-event-bus-x:1.7.2'
//region test libs
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test:core:1.3.0'
androidTestImplementation 'androidx.test:core-ktx:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
//endregion
}
项目根目录 build.gradle
添加项目所用到的插件以及定义统一的版本号
apply plugin: 'koin'
apply plugin: 'com.alibaba.arouter'
apply plugin: 'com.didi.dokit'
buildscript {
ext {
kotlin_version = '1.4.10'
compile_sdk_version = 29
build_tools_version = '29.0.3'
min_sdk_verion = 21
target_sdk_version = 29
lib_version_code = 1
lib_version_name = "1.0.0"
navigation_version = "2.3.0"//navigation 版本号,需要在dependencies和classpath保持一致
koin_version = '2.1.6'//依赖注入框架
}
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
classpath "org.koin:koin-gradle-plugin:$koin_version"
classpath "com.alibaba:arouter-register:1.0.2"
//doraemonKit 调试辅助工具
classpath 'com.didichuxing.doraemonkit:doraemonkit-plugin:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}