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

使用Gradle Kotlin DSL管理BuildConfig字段遇类型转换错误求助

解决Gradle中buildConfigField遍历报错及格式问题

错误原因

  1. 类型识别错误:project.extra["vars"]返回的是Any类型,直接遍历会导致Gradle无法正确识别其为Map集合,误将其当作Pair处理,抛出类型转换异常。
  2. 字符串格式错误:原代码中buildConfigField的第三个参数是带转义双引号的字符串(如"\"1\""),遍历时代码直接使用${entry.value}会丢失外层双引号,导致生成的BuildConfig代码语法错误。

修复后的代码

config.gradle.kts(保持不变)

val vars = mapOf(
    "VAR_1" to "1",
    "VAR_2" to "2",
    //...
    "VAR_10" to "10",
)
project.extra.set("vars", vars)

主build.gradle.kts修改

apply(from = "config.gradle.kts")

android {
    defaultConfig {
        // 显式转换为Map类型,解决类型识别问题
        val vars = project.extra["vars"] as Map<String, String>
        vars.forEach { (key, value) ->
            // 为字符串值添加转义双引号,符合buildConfigField的要求
            buildConfigField("String", key, "\"$value\"")
        }
    }
}

关键说明

  • 显式类型转换:通过as Map<String, String>将project.extra中的值转换为明确的Map类型,让Gradle能正确识别集合类型并遍历Entry。
  • 字符串转义:使用"\"$value\""确保生成的BuildConfig字段值是带双引号的字符串,符合Java语法规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:33:12