You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免在Android子模块的build.gradle中重复配置?

避免Android项目模块build.gradle重复配置的方案

下面是三种常用的解决方法,帮你统一管理通用配置,减少子模块的重复代码:

1. 根目录build.gradle统一注入配置

在项目根目录的build.gradle(Groovy语法)中,通过subprojects块为所有子模块批量配置通用参数:

subprojects {
    apply plugin: 'com.android.library'
    apply plugin: 'org.jetbrains.kotlin.android'

    android {
        compileSdk 33

        defaultConfig {
            minSdk 24
        }

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_17
            targetCompatibility JavaVersion.VERSION_17
        }
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_17.toString()
        }
    }
}

之后子模块的build.gradle只需要声明自身独有的namespace即可:

android {
    namespace = "com.google.samples.apps.nowinandroid.core.common"
}

2. 独立配置文件复用

在项目根目录创建单独的配置文件(比如configs/android_common.gradle),把通用配置集中写入:

android {
    compileSdk 33

    defaultConfig {
        minSdk 24
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }
}

然后在每个子模块的build.gradle中引入这个文件:

apply from: rootProject.file("configs/android_common.gradle")

android {
    namespace = "com.google.samples.apps.nowinandroid.core.common"
}

3. 约定插件(Kotlin DSL推荐方案)

如果项目使用Kotlin DSL(build.gradle.kts),可以通过buildSrc创建约定插件来实现更优雅的配置复用:

步骤1:创建约定插件类

在项目根目录新建buildSrc/src/main/kotlin/AndroidCommonConventionPlugin.kt:

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.android
import com.android.build.api.dsl.LibraryExtension

class AndroidCommonConventionPlugin : Plugin<Project> {
    override fun apply(target: Project) {
        with(target) {
            apply(plugin = "com.android.library")
            apply(plugin = "org.jetbrains.kotlin.android")

            extensions.configure<LibraryExtension>("android") {
                compileSdk = 33

                defaultConfig {
                    minSdk = 24
                }

                compileOptions {
                    sourceCompatibility = JavaVersion.VERSION_17
                    targetCompatibility = JavaVersion.VERSION_17
                }
                kotlinOptions {
                    jvmTarget = JavaVersion.VERSION_17.toString()
                }
            }
        }
    }
}

步骤2:配置buildSrc依赖

在buildSrc/build.gradle.kts中添加必要依赖:

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
    google()
}

dependencies {
    implementation("com.android.tools.build:gradle:7.4.2")
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0")
}

步骤3:子模块应用插件

子模块的build.gradle.kts只需应用插件并声明namespace:

plugins {
    id("android-common-convention")
}

android {
    namespace = "com.google.samples.apps.nowinandroid.core.common"
}

内容的提问来源于stack exchange,提问作者Mohammadreza Khahani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:33:25