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

多模块Android项目:如何统一配置build.gradle中的公共SDK参数?

统一配置Android模块化项目的Sdk版本参数(基于Version Catalog)

当然可以,借助Version Catalog的集中版本管理能力,结合Gradle的子项目配置或约定插件,就能实现所有模块自动继承统一的Sdk参数,无需重复编写。以下是两种实用方案:

方案一:根项目统一配置(快速实现)

1. 在Version Catalog中定义Sdk版本

打开项目根目录的libs.versions.toml,在[versions]块中添加Sdk参数:

[versions]
compileSdk = "34"
minSdk = "24"
targetSdk = "34"

2. 根项目build.gradle中统一配置所有子模块

根据你使用的Groovy或Kotlin DSL,选择对应代码添加到根项目的build.gradle(或build.gradle.kts)中:

Groovy版

subprojects {
    afterEvaluate { project ->
        // 仅对Android应用/库模块生效
        if (project.plugins.hasPlugin('com.android.application') || project.plugins.hasPlugin('com.android.library')) {
            android {
                compileSdk libs.versions.compileSdk.get().toInteger()

                defaultConfig {
                    minSdk libs.versions.minSdk.get().toInteger()
                    targetSdk libs.versions.targetSdk.get().toInteger()
                }
            }
        }
    }
}

Kotlin DSL版

subprojects {
    afterEvaluate {
        if (plugins.hasPlugin("com.android.application") || plugins.hasPlugin("com.android.library")) {
            configure<com.android.build.api.dsl.CommonExtension<*, *, *, *, *>> {
                compileSdk = libs.versions.compileSdk.get().toInt()

                defaultConfig {
                    minSdk = libs.versions.minSdk.get().toInt()
                    targetSdk = libs.versions.targetSdk.get().toInt()
                }
            }
        }
    }
}

配置完成后,所有模块无需再重复编写compileSdk、minSdk和targetSdk。如果某个模块需要特殊配置(比如单独的minSdk),直接在该模块的build.gradle中覆盖对应参数即可,Gradle会优先使用模块内的配置。

方案二:约定插件(大型项目推荐)

对于模块较多的大型项目,使用Gradle约定插件可以让配置更模块化、可维护:

1. 创建约定插件

在项目根目录创建buildSrc目录,然后在buildSrc/src/main/groovy(或kotlin)下创建插件类:

Groovy版插件类(com/example/AndroidSdkConventionPlugin.groovy)

import org.gradle.api.Plugin
import org.gradle.api.Project
import com.android.build.api.dsl.CommonExtension

class AndroidSdkConventionPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        // 对Android应用和库模块应用统一配置
        project.plugins.withId('com.android.application') {
            configureAndroidSdk(project)
        }
        project.plugins.withId('com.android.library') {
            configureAndroidSdk(project)
        }
    }

    private void configureAndroidSdk(Project project) {
        project.extensions.configure(CommonExtension) { android ->
            android.compileSdk = project.libs.versions.compileSdk.get().toInt()

            android.defaultConfig {
                minSdk = project.libs.versions.minSdk.get().toInt()
                targetSdk = project.libs.versions.targetSdk.get().toInt()
            }
        }
    }
}

配置buildSrc的依赖(buildSrc/build.gradle)

dependencies {
    implementation 'com.android.tools.build:gradle:8.2.0'
}

2. 全局应用约定插件

在根项目的build.gradle中添加:

subprojects {
    apply plugin: com.example.AndroidSdkConventionPlugin
}

之后每个模块只需正常应用com.android.application或com.android.library插件,就会自动继承统一的Sdk配置,同样支持模块内单独覆盖参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:39:53