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

将通用Gradle代码抽离到独立文件:Groovy可用Kotlin报“Unresolved reference”

解决Kotlin DSL独立脚本中"Unresolved reference: android"错误

原因

Groovy脚本可隐式访问android扩展,但Kotlin DSL是强类型语言,单独的.gradle.kts脚本默认没有android作用域上下文,必须显式声明或获取对应扩展对象。

方案1:适配现有apply from引用方式

修改gradle/androidDefaults.gradle.kts文件,通过configure方法显式配置Android库扩展:

// 引入Android库插件但不立即应用,让脚本识别扩展类型
plugins {
    id("com.android.library") apply false
}

// 配置Android Library扩展
configure<com.android.build.api.dsl.LibraryExtension> {
    compileSdk = 33

    defaultConfig {
        minSdk = 21 // 按项目需求调整
        targetSdk = 33
    }

    // 添加通用配置示例
    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

模块中的引用方式保持不变:

apply {
    from(rootProject.file("gradle/androidDefaults.gradle.kts"))
}

方案2:使用预编译脚本插件(Kotlin DSL最佳实践)

预编译脚本插件是Gradle推荐的Kotlin DSL复用方式,比apply from更可靠且类型安全。

  1. 创建buildSrc目录结构
    在项目根目录下新建buildSrc文件夹,结构如下:
buildSrc/
├── build.gradle.kts
└── src/
    └── main/
        └── kotlin/
            └── com/
                └── yourcompany/
                    └── android-library-defaults.gradle.kts
  1. 配置buildSrc的build.gradle.kts
plugins {
    `kotlin-dsl`
}

repositories {
    google()
    mavenCentral()
}

dependencies {
    // AGP版本需与Gradle7.5匹配,此处使用7.4.2
    implementation("com.android.tools.build:gradle:7.4.2")
}
  1. 编写预编译插件脚本
    在android-library-defaults.gradle.kts中写入通用配置:
plugins {
    id("com.android.library")
}

android {
    compileSdk = 33

    defaultConfig {
        minSdk = 21
        targetSdk = 33
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}
  1. 在库模块中引用插件
    修改库模块的build.gradle.kts,直接引用预编译插件:
plugins {
    id("com.yourcompany.android-library-defaults")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:20:12