集成问题:无法读取Kotlin元数据,Supabase构建失败
问题:Supabase集成导致Android构建失败,报错"Unable to read Kotlin metadata due to unsupported metadata kind: null"
构建任务在保留Supabase相关依赖和代码时失败,移除后可正常执行,报错信息如下:
Unable to read Kotlin metadata due to unsupported metadata kind: null.
我的Gradle配置文件如下:
plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) kotlin("plugin.serialization") version "2.0.0" // No change id("kotlin-kapt") id("com.google.gms.google-services") } android { namespace = "com.example.fl_5" compileSdk = 35 defaultConfig { applicationId = "com.example.fl_5" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" // No change } buildFeatures { compose = true // No change } } dependencies { implementation(libs.androidx.core.ktx) // No change implementation(libs.androidx.lifecycle.runtime.ktx) // No change implementation(libs.androidx.activity.compose) // No change implementation(platform(libs.androidx.compose.bom)) // No change implementation(libs.androidx.ui) // No change implementation(libs.androidx.ui.graphics) // No change implementation(libs.androidx.ui.tooling.preview) // No change implementation(libs.androidx.material3) // No change // Navigation and Room dependencies implementation("androidx.navigation:navigation-compose:2.7.5") implementation("androidx.room:room-runtime:2.6.1") kapt("androidx.room:room-compiler:2.6.1") // Firebase dependencies implementation(platform("com.google.firebase:firebase-bom:33.10.0")) // No change implementation("com.google.firebase:firebase-analytics") // No change // Coil for image loading implementation("io.coil-kt:coil-compose:2.5.0") // No change // Supabase Integration - using the latest BOM version for Supabase libraries implementation(platform("io.github.jan-tennert.supabase:bom:3.1.3")) implementation("io.github.jan-tennert.supabase:postgrest-kt") // No change implementation("io.github.jan-tennert.supabase:auth-kt") // No change // Ktor Client - updated to the latest version compatible with Kotlin 2.0.0 implementation("io.ktor:ktor-client-android:3.0.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") // Serialization (required for Supabase) implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") // Testing dependencies - no changes here. testImplementation(libs.junit) // No change androidTestImplementation(libs.androidx.junit) // No change }
已尝试更新Supabase与Ktor依赖,但问题仍未解决,求可行解决方案。
解决方案
1. 统一Kotlin插件版本
当前项目中kotlin("plugin.serialization")使用2.0.0,但libs.plugins.kotlin.android的版本可能与之不匹配(查看libs.versions.toml确认Kotlin基础版本)。将序列化插件版本改为与Kotlin Android插件一致,例如若Kotlin版本为1.9.20:
kotlin("plugin.serialization") version "1.9.20"
Kotlin 2.0属于较新的稳定初期版本,第三方库兼容性不足,建议暂时回退到1.9.x稳定版本。
2. 降级Supabase BOM版本
Supabase 3.x系列与Kotlin 2.0存在已知兼容性问题,切换到稳定的2.x版本:
implementation(platform("io.github.jan-tennert.supabase:bom:2.2.0"))
3. 移除手动指定的Ktor依赖
Supabase BOM已内置管理适配版本的Ktor,手动添加的Ktor依赖会导致版本冲突,删除以下行:
implementation("io.ktor:ktor-client-android:3.0.0")
4. 升级Room版本适配Kotlin
Room 2.6.1对Kotlin 2.0支持不完善,升级到最新稳定版本:
implementation("androidx.room:room-runtime:2.7.0") kapt("androidx.room:room-compiler:2.7.0")
5. 清理构建缓存并重新同步
- 执行终端命令:
./gradlew clean - 在Android Studio中点击
File > Sync Project with Gradle Files
内容的提问来源于stack exchange,提问作者Ram KVS
相关产品推荐
相关产品推荐

