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
相关产品推荐
相关产品推荐

