Provided Metadata instance has version 2.1.0, while maximum supported version is 2.0.0......

解决  Provided Metadata instance has version 2.1.0, while maximum supported version is 2.0.0. To support newer versions, update the kotlinx-metadata-jvm library.的问题 

解决方法:

androidx.room:room-compiler:2.6.1

更改为

androidx.room:room-compiler-processing:2.6.1

解决了问题这个问题。但是运行到数据库逻辑报错,DataBase无法生成,涉及到ksp

首先请务必选择与项目的 Kotlin 版本一致的 KSP 版本  下面链接找最新版

https://github.com/google/ksp/releases

配置项目级build.gradle

 id 'com.google.devtools.ksp' version '2.1.0-1.0.29'

配置app moudle级build.gradle中的plugins

id "com.google.devtools.ksp"

并且添加路径配置

android {
        sourceSets["main"].java.srcDir("build/generated/ksp/main/kotlin")
    }

最后ksp依赖

  ksp "androidx.room:room-compiler:2.6.1"

完毕!!!

解释原因:

room-compiler 和 room-compiler-processing 的区别:

room-compiler 是 Room 的标准注解处理器,它负责在编译时处理 Room 的数据库注解(如 @Entity, @Dao 等)。但是,在某些情况下,特别是在使用 Kotlin 1.9 或更高版本时,room-compiler 可能与 Kotlin 元数据 2.1.0 版本不兼容,导致无法正常处理注解。
room-compiler-processing是一个专门为 Kotlin 1.9+ 和 新版 Kotlin 元数据版本(例如 2.1.0) 提供支持的版本。它更新了对 Kotlin 元数据 的支持,解决了版本冲突的问题。
room-compiler-processing 的改进: androidx.room:room-compiler-processing 版本提供了对 Kotlin 2.1.0 元数据 的支持,并解决了与旧版注解处理器(room-compiler)的 不兼容问题。具体来说,它更新了对 Kotlin 元数据的版本兼容性,使得 Room 能够正确处理新的 Kotlin 编译器元数据格式(2.1.0)。

这就是为什么当你将 room-compiler 替换为 room-compiler-processing 后,问题得到了解决。room-compiler-processing 版本在内部处理了 Kotlin 元数据格式的更新,从而避免了因版本不兼容导致的错误。

为什么会发生这种错误:

这是因为 Room 在处理 Kotlin 注解时,依赖于 kotlinx-metadata-jvm 库来解析 Kotlin 的类和注解。Kotlin 1.9 版本引入了 2.1.0 的 Kotlin 元数据格式,而旧版 Room 库(如 room-compiler)并不兼容这个格式。
使用 room-compiler-processing 版本,Room 内部更新了对该新格式的支持,从而解决了与 kotlinx-metadata-jvm 2.1.0 版本之间的兼容性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值