【Android】02、基于Kotlin DSL语法的 Android 项目统一配置

前言

在日常开发过程中,当我们建立一个多Module的Android项目时,传统配置方式需在每个Modulebuild.gradle.kts中重复编写编译版本、依赖版本、插件版本等配置,不仅导致冗余代码,还易引发版本不一致、维护成本高等问题。本文将介绍基于Kotlin DSL的统一配置方案,通过Version Catalog + 全局配置文件的组合,实现全项目配置的集中管理与高效维护。


一、目的与意义

  1. 集中管理编译配置(compileSdk、minSdk等);
  2. 子Module直接复用全局配置,无需重复编写;
  3. 支持灵活扩展,适配多Module(应用模块 + 库模块)场景;
  4. 遵循Kotlin DSL语法规范,保证配置类型安全。

二、实现步骤

  1. 编写全局配置文件config.gradle.kts
    在项目根目录创建名称为config.gradle.kts的文件,在该文件内集中定义编译配置、通用配置,通过extra属性将其暴露给子Module,示例内容如下:
extra["androidCompileSdkVersion"] = 34
extra["androidApplicationId"] = "com.dev.xxx"
extra["androidMinSdkVersion"] = 26
extra["androidTargetSdkVersion"] = 34
extra["androidVersionCode"] = 1
extra["androidVersionName"] = "V1.0.0"
  1. 在项目中引用config.gradle.kts配置文件
    在项目的build.gradle.kts脚本文件中统一引入插件和加载全局配置文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.jetbrains.kotlin.android) apply false
    alias(libs.plugins.android.library) apply false
}

apply(from = "config.gradle.kts")
  1. 在子Module中进行统一配置
    在项目的子Module(app/module_login等)中,我们无需重复编写配置,直接引用根项目的extra属性即可。
  • 应用模块(app/build.gradle.kts)
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
}

android {
    namespace = "com.dev.mvvmbaseproject"
    compileSdk = rootProject.extra["androidCompileSdkVersion"] as Int

    defaultConfig {
        applicationId = rootProject.extra["androidApplicationId"] as String
        minSdk = rootProject.extra["androidMinSdkVersion"] as Int
        targetSdk = rootProject.extra["androidTargetSdkVersion"] as Int
        versionCode = rootProject.extra["androidVersionCode"] as Int
        versionName = rootProject.extra["androidVersionName"] as String

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    ...
}

dependencies {
    implementation(libs.androidx.core.ktx)
    ...
}
  • 其它Module(module-xx/build.gradle.kts)
plugins {
    alias(libs.plugins.android.library)
    alias(libs.plugins.jetbrains.kotlin.android)
}

android {
    namespace = "com.dev.base"
    compileSdk = rootProject.extra["androidCompileSdkVersion"] as Int

    defaultConfig {
        minSdk = rootProject.extra["androidMinSdkVersion"] as Int

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles("consumer-rules.pro")
    }

    ...
}

dependencies {
    implementation(libs.androidx.core.ktx)
    ...
}

三、需要掌握的知识

在时间充裕的情况下,你可以先了解以下知识,这样能够快速理解本文内容:

  • 熟悉Android Gradle插件(AGP)基础配置;
  • 了解Kotlin DSL语法,明白其与Groovy DSL的区别;
  • 项目已升级为Kotlin DSL构建脚本(.gradle.kts后缀)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容