引入KMongo 4.8.0至SDK项目时出现Record desugaring构建错误求助
解决KMongo依赖导致的「Record desugaring」构建错误
问题原因
KMongo 4.8.0依赖的Mongo Java Driver等库使用了Java Record特性,而Android SDK项目默认编译配置未启用core library desugaring,无法处理这类Java 16+特性,从而触发构建错误。简单Kotlin JVM项目因JDK版本或默认配置原生支持Record特性,所以无此问题。
解决方案
启用coreLibraryDesugaring
在SDK模块的build.gradle(或build.gradle.kts)中添加以下配置,开启Java 8+特性的desugaring支持:
Groovy示例:android { compileOptions { coreLibraryDesugaringEnabled true sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' implementation 'org.litote.kmongo:kmongo:4.8.0' }Kotlin DSL示例:
android { compileOptions { isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") implementation("org.litote.kmongo:kmongo:4.8.0") }升级KMongo版本
尝试升级到KMongo 5.x及以上版本,新版本通常会优化对Android环境的兼容性,可能已修复相关desugaring冲突问题。排除冲突依赖(谨慎使用)
若不想启用desugaring,可尝试排除KMongo中引入的使用Java Record的模块,但可能导致部分功能失效:implementation('org.litote.kmongo:kmongo:4.8.0') { exclude group: 'org.mongodb', module: 'mongodb-driver-core' }
内容的提问来源于stack exchange,提问作者Masturbinho
相关产品推荐
相关产品推荐

