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

Android项目配置buildSrc从libs.versions.toml生成libs失败求助

问题

我正在研究在当前Android项目中使用buildSrc,已创建buildSrc文件夹并定义了可在项目gradle kts文件中正常使用的Config常量:

object Config {

    object App {
        const val nameHeader = "APPLICATION_NAME"
        const val name = "Android My App"
        const val packageName = "org.research.development"
    }

    const val minSdk = 21
    const val targetSdk =  34

    val javaVersion = org.gradle.api.JavaVersion.VERSION_17
}

现在我希望通过以下修改,利用已有的libs.versions.toml生成buildSrc模块的libs文件夹:

buildSrc/build.gradle.kts

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
    `kotlin-dsl`
}

repositories {
    mavenCentral()
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

kotlin {
    compilerOptions {
        jvmTarget.set(JvmTarget.JVM_17)
        languageVersion.set(KotlinVersion.KOTLIN_2_0)
    }
}

buildSrc/settings.gradle.kts

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

rootProject.name = "buildSrc"

但执行同步、清理和构建操作后,libs文件夹仍然为空。请问是我的预期有误,还是遗漏了关键配置技巧?

解决方案

首先你的预期存在偏差:通过versionCatalogs引用libs.versions.toml并不会自动生成物理的libs文件夹。Gradle的版本目录是逻辑层面的依赖声明抽象,不会在buildSrc下创建实体文件夹。你需要在buildSrc中直接引用这个逻辑目录的依赖,而非等待生成物理文件夹。

关键配置和使用步骤如下:

  • 确认根目录依赖声明:确保项目根目录gradle/libs.versions.toml已正确声明依赖,示例:

    [versions]
    kotlin = "2.0.0"
    android-gradle-plugin = "8.5"
    
    [libraries]
    kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
    android-gradle = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" }
    
  • 在buildSrc中添加依赖:修改buildSrc/build.gradle.kts,通过libs目录引入所需依赖:

    dependencies {
        // 引用libs.versions.toml中声明的依赖
        implementation(libs.kotlin.stdlib)
        implementation(libs.android.gradle)
    }
    
  • 在buildSrc代码中使用依赖:配置完成后,即可在Config类或其他buildSrc代码中直接使用这些依赖提供的API,比如Android Gradle相关类。

  • 同步项目:重新同步Gradle,buildSrc会自动解析libs.versions.toml中的依赖,这些依赖会存储在Gradle全局缓存中,不会在buildSrc目录下生成实体文件夹。

补充说明:

  • 你当前的buildSrc/settings.gradle.kts配置是正确的,已成功关联根目录的libs.versions.toml
  • buildSrc作为独立Gradle子项目,其依赖由自身的build.gradle.kts声明,同步后依赖会被Gradle后台管理,不会显示在buildSrc本地文件夹中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:34:56