模块化是应用程序开发中的一种技术,它允许我们将功能分离到独立的模块中。模块化应用程序为每个模块都有许多build.gradle文件。因此,我们需要管理其中的依赖项。目标是使依赖声明更加整洁和富有表现力。此外,简化库的维护。
我们将依赖于一个名为buildSrc的特殊模块。按照以下步骤操作:
1. 使用Kotlin DSL作为构建脚本,创建一个新的Android Studio项目。
2. 在项目的主文件夹中创建名为buildSrc的新文件夹。此文件夹将成为适应所有依赖项的模块。
3. 在buildSrc创建多个文件夹和文件,所以结构如下:
buildSrc ├── src │ └── main │ ─└── java │ ──└── Dependencies.kt ├── build.gradle.kts
4.在build.gradle.kts文件中添加Kotlin DSL插件:
plugins { `kotlin-dsl` } repositories { jcenter() }5.通过执行Gradle同步来激活插件。
6.接下来在Dependencies.kt文件中,我们将所有依赖项及其版本声明为多个对象。我们还可以按类型对对象进行分组。这样代码看起来更整洁。例如:
private const val kotlinVersion = "1.3.31" private const val androidGradleVersion = "3.4.0" //support libs private const val appcompatVersion = "1.0.0" private const val constraintLayoutVersion = "1.1.3" //test libs private const val junitVersion = "4.12" private const val runnerVersion = "1.1.0" private const val espressoVersion = "3.1.0" object Dependencies{ object Android { val minSdkVersion = 21 val targetSdkVersion = 28 val compileSdkVersion = 28 val applicationId = "com.dicoding.app" val versionCode = 1 val versionName = "0.1" } object Kotlin{ val kotlin_std = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" } object BuildPlugins { const val androidGradle = "com.android.tools.build:gradle:$androidGradleVersion" const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } object SupportLibs{ val appcompat = "androidx.appcompat:appcompat:$appcompatVersion" val constraint_layout = "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion" } object TestLibs{ val junit = "junit:junit:$junitVersion" val espresso = "androidx.test.espresso:espresso-core:$espressoVersion" val runner = "androidx.test:runner:$runnerVersion" } }7.现在我们就可以在应用build.gradle中使用所需依赖项,例如:
implementation(Dependencies.Kotlin.kotlin_std) implementation(Dependencies.SupportLibs.appcompat) implementation(Dependencies.SupportLibs.constraint_layout)