Android项目中管理Gradle依赖项

    xiaoxiao2022-06-30  104

    模块化是应用程序开发中的一种技术,它允许我们将功能分离到独立的模块中。模块化应用程序为每个模块都有许多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)

     


    最新回复(0)