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

Android中如何在build.gradle.kts生成可用于XML的versionName字符串

解决Kotlin DSL中applicationVariants.resValue的类型不匹配问题

你遇到的报错是因为Kotlin DSL里的applicationVariants.all()方法要求lambda返回Boolean类型(用于判断所有变体是否满足某个条件),而你调用variant.resValue()后返回的是Unit,导致类型不匹配。

有两种解决方式:

方式一:改用forEach遍历(推荐)

forEach专门用于遍历执行操作,不需要返回值,更符合你的需求:

applicationVariants.forEach { variant ->
    variant.resValue("string", "versionName", variant.versionName)
}

方式二:在all的lambda中返回true

如果坚持用all,需要在lambda末尾返回一个Boolean值:

applicationVariants.all { variant ->
    variant.resValue("string", "versionName", variant.versionName)
    true // 必须返回Boolean类型,这里表示所有变体都符合条件
}

本质原因是Groovy和Kotlin DSL中all方法的语义不同:Groovy里的all是遍历执行操作,而Kotlin的all是断言所有元素满足条件,因此用forEach更贴合你生成资源值的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:14:57