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

Kotlin中Map.forEach报需API 24的lint错误,修改代码仍未解决

问题原因

你遇到的是Android Lint的误报问题,根本原因如下:

  • Kotlin标准库为Map提供的forEach是跨平台兼容的扩展函数,本身不需要Android API 24支持,在API 21设备上可以正常运行。
  • 低版本Android Gradle Plugin(AGP)内置的Lint规则存在bug,会把Kotlin的Map.forEach扩展函数错误识别为Java 8新增的java.util.Map#forEach接口默认方法,后者确实是Android API 24才加入的接口,因此触发了NewApi报错。
  • 你修改的解构赋值写法调用的仍然是同一个Kotlin扩展函数,因此不会消除Lint的误判。
解决方案
  1. 升级AGP到7.0及以上版本
    该误报问题已经在AGP 7.0版本中修复,如果你的项目可以升级构建工具版本,这是最彻底的解决方式。
  2. 替换为for循环写法
    如果暂时无法升级AGP,可以将forEach调用替换为Kotlin的for循环遍历写法,Lint不会对这种写法产生误判:
eventKey.firebaseKey?.let { key ->
    properties?.also {
        for ((propertyKey, value) in it) {
            eventData.put(propertyKey.property, value)
        }
    }
}
  1. 加注解忽略Lint警告
    你可以直接给对应方法或者代码块添加@Suppress("NewApi")注解忽略该警告,因为实际运行不存在兼容问题:
@Suppress("NewApi")
fun event(eventKey: EventKey, properties: Map<EventProperty, Any>) {
    eventKey.firebaseKey?.let { key ->
        properties?.forEach { entry ->
            eventData.put(entry.key.property, entry.value)
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:45:02