Android Kotlin项目Hilt报Unsupported metadata version错误求助
使用Kotlin开发的Android项目集成Hilt依赖后,运行时出现如下错误:
error: [Hilt] Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is = 1.0
at dagger.hilt.processor.internal.kotlin.KotlinMetadata.metadataOf(KotlinMetadata.java:200)
at dagger.hilt.processor.internal.kotlin.KotlinMetadata.from(KotlinMetadata.java:182)
at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1220)
at dagger.hilt.processor.internal.kotlin.KotlinMetadataFactory.create(KotlinMetadataFactory.java:54)
at dagger.hilt.processor.internal.kotlin.KotlinMetadataUtil.isObjectClass(KotlinMetadataUtil.java:102)
at dagger.hilt.processor.internal.kotlin.KotlinMetadataUtil.isObjectOrCompanionObjectClass(KotlinMetadataUtil.java:119)
at dagger.hilt.processor.internal.Processors.requiresModuleInstance(Processors.java:950)
at dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor.processModule(AggregatedDepsProcessor.java:169)
at dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor.processEach(AggregatedDepsProcessor.java:120)
at dagger.hilt.processor.internal.BaseProcessor.process(BaseProcessor.java:195)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:197)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1023)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:939)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1267)
at...
项目配置如下:
应用级build.gradle
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'com.google.dagger.hilt.android' } android { namespace 'com.example.tazakhabar' compileSdk 34 defaultConfig { applicationId "com.example.tazakhabar" minSdk 23 targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } buildFeatures{ viewBinding true } } dependencies { implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' kapt 'com.google.dagger:hilt-android-compiler:2.44' implementation 'com.google.dagger:hilt-android:2.44' implementation 'com.google.android.material:material:1.8.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.github.bumptech.glide:glide:4.14.2' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // alternatively - just ViewModel implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation 'com.intuit.ssp:ssp-android:1.1.0' implementation 'com.intuit.sdp:sdp-android:1.1.0' implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3' implementation 'androidx.activity:activity-ktx:1.6.1' // alternatively - just LiveData implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1' implementation 'com.facebook.shimmer:shimmer:0.5.0' implementation(platform("com.google.firebase:firebase-bom:32.2.3")) // Add the dependency for the Firebase Authentication library // When // using the BoM, you don't specify versions in Firebase library // dependencies implementation("com.google.firebase:firebase-auth-ktx") }
项目级build.gradle
// Top-level build file where you can add configuration options common // to all sub-projects/modules. plugins { id 'com.android.application' version '7.4.2' apply false id 'com.android.library' version '7.4.2' apply false id 'org.jetbrains.kotlin.android' version '1.9.10' apply false id 'com.google.dagger.hilt.android' version '2.44' apply false }
错误核心是Hilt版本与Kotlin版本不兼容。当前使用的Kotlin版本为1.9.10,但Hilt 2.44不支持该版本——Hilt的注解处理器依赖特定版本的Kotlin元数据格式,新版本Kotlin的元数据格式超出了旧版Hilt的处理能力,因此抛出该错误。
有两种可行方案,任选其一即可:
方案一:升级Hilt版本到兼容Kotlin 1.9.x的版本
Hilt 2.48及以上版本支持Kotlin 1.9.x,修改配置如下:
项目级build.gradle
更新Hilt插件版本:
plugins { // 其他配置保持不变 id 'com.google.dagger.hilt.android' version '2.48' apply false }
应用级build.gradle
更新Hilt依赖和编译器版本:
dependencies { // 替换旧的Hilt依赖 implementation 'com.google.dagger:hilt-android:2.48' kapt 'com.google.dagger:hilt-android-compiler:2.48' // 其他依赖保持不变 }
方案二:降级Kotlin版本到Hilt 2.44支持的版本
Hilt 2.44最高支持Kotlin 1.8.x,将Kotlin版本降至1.8.20:
项目级build.gradle
修改Kotlin插件版本:
plugins { // 其他配置保持不变 id 'org.jetbrains.kotlin.android' version '1.8.20' apply false }
生效操作
完成配置修改后,执行以下步骤确保生效:
- 点击Android Studio右上角的Sync Project with Gradle Files按钮同步配置
- 点击Build > Clean Project清理旧编译缓存
- 重新编译运行项目
内容的提问来源于stack exchange,提问作者CHANDRA M

