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

升级Kotlin 1.7.0后Room报绑定变量无匹配方法参数错误

问题根因

这不是业务代码编写错误,属于版本兼容问题:Kotlin 1.7.0调整了编译阶段生成的方法参数元数据规则,你当前使用的Room 2.4.2版本的kapt处理器没有适配该规则,无法自动读取到DAO方法的参数名,因此判定查询语句中的:limit、:offset绑定变量没有匹配的方法参数。
降级到Kotlin 1.6.21时,参数元数据生成规则和Room 2.4.2的读取逻辑匹配,所以可以正常运行。

修复方案

任选一种即可解决问题:

  • 优先选择升级Room依赖到2.4.3或更高版本,该版本已经完成Kotlin 1.7.0的适配,不需要修改任何业务代码,直接调整依赖版本即可正常编译:
    implementation "androidx.room:room-runtime:2.4.3"
    kapt "androidx.room:room-compiler:2.4.3"
    
  • 如果暂时不能升级Room版本,可以给DAO方法的参数显式添加@Param注解指定绑定的参数名,绕开编译时自动读取参数名的逻辑,修改后的代码如下:
    @Query("SELECT * FROM eventdata ORDER BY id ASC LIMIT :limit OFFSET :offset")
    fun allEvents(
        @Param("limit") limit: Int,
        @Param("offset") offset: Int
    ): List<EventData>
    

另外需要注意,你配置里的kotlin-android-extensions插件在Kotlin 1.7及以上版本已经被正式废弃,后续建议尽早迁移到视图绑定、独立Parcelize插件等官方推荐方案,避免后续版本升级出现其他兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:24:16