集成Supabase时出现Kotlin运行时库二进制格式不支持错误
问题分析
你遇到的是Kotlin版本不兼容问题:项目指定使用Kotlin 1.8.0,但Supabase BOM 3.0.3依赖的Ktor等核心库是基于Kotlin 2.x编译的,和你项目的Kotlin 1.8.0二进制格式不匹配,因此出现了「预期版本1.8.0,实际为2.0.0/2.1.0」的冲突提示。
解决方案
方案1:升级项目Kotlin版本适配Supabase 3.x
Supabase 3.x系列要求Kotlin版本至少为1.9.0,直接升级项目的Kotlin插件和标准库版本即可解决冲突:
修改项目根目录build.gradle
plugins { id 'com.android.application' version '8.0.1' apply false id 'com.android.library' version '8.0.1' apply false id 'org.jetbrains.kotlin.android' version '1.9.20' apply false // 升级到兼容版本 }
修改app模块build.gradle
更新Kotlin标准库版本,与插件版本保持一致:
dependencies { // 替换原kotlin-stdlib依赖 implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.20' // 其他依赖保留不变 ... }
完成后点击Android Studio右上角「Sync Project with Gradle Files」,再执行Build -> Clean Project -> Rebuild Project。
方案2:降级Supabase到兼容Kotlin 1.8.0的版本
如果暂时不想升级Kotlin,可切换到Supabase 2.x系列,它依赖的Ktor库基于Kotlin 1.8.x编译:
修改app模块build.gradle中的Supabase依赖
dependencies { // 替换原Supabase BOM及依赖 implementation(platform("io.github.jan-tennert.supabase:bom:2.1.0")) implementation("io.github.jan-tennert.supabase:supabase-kt") implementation("io.github.jan-tennert.supabase:postgrest-kt") implementation("io.github.jan-tennert.supabase:auth-kt") implementation("io.github.jan-tennert.supabase:realtime-kt") ... }
同样同步Gradle并清理重建项目。
方案3:强制统一Kotlin依赖版本(不推荐)
若以上两种方案都不适用,可在项目根目录build.gradle中添加强制版本规则,强行将所有Kotlin相关依赖锁定到1.8.0:
plugins { // 原有插件配置 ... } allprojects { configurations.all { resolutionStrategy { force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0' force 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0' force 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0' force 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3' // 匹配Kotlin 1.8的协程版本 } } }
⚠️ 此方法可能引发Supabase或Ktor内部的逻辑兼容性问题,仅作为临时备选方案。
验证步骤
- 同步Gradle后,打开
File -> Project Structure -> Modules -> app -> Dependencies,检查所有Kotlin相关依赖版本是否统一; - 运行项目,确认错误消失且Supabase云备份功能正常工作。
内容的提问来源于stack exchange,提问作者André Martinez
相关产品推荐
相关产品推荐

