刀柄 Kotlin 中不受支持的元数据版本

Min*_*yên 11 mobile kotlin android-studio android-jetpack-compose dagger-hilt

我试图在 Kotlin 1.5.10 中使用插件运行我的代码

plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
Run Code Online (Sandbox Code Playgroud)

和依赖关系如下

dependencies {
    ...
    //Dagger - Hilt
    implementation "com.google.dagger:hilt-android:2.33-beta"
    kapt "com.google.dagger:hilt-android-compiler:2.33-beta"
    implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
    kapt "androidx.hilt:hilt-compiler:1.0.0-beta01"
    implementation 'androidx.hilt:hilt-navigation-compose:1.0.0-alpha01'

    implementation 'com.android.support:palette-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

当我迁移到 kotlin_version = "1.5.10" 时,它只是错误说明

错误:[Hilt] 不支持的元数据版本。检查您的 Kotlin 版本是否 >= 1.0: java.lang.IllegalStateException: Unsupported metadata version。在 dagger.internal.codegen.kotlin.KotlinMetadata.metadataOf(KotlinMetadata.java:206) at dagger.internal.codegen.kotlin.KotlinMetadata.from(KotlinMetadata.java:186) at java 检查您的 Kotlin 版本是否 >= 1.0。 base/java.util.HashMap.computeIfAbsent(HashMap.java:1133) ...

谁能帮我?我花了很多时间,你的回答对我很有帮助

小智 63

这是我解决错误的方法:

如果您使用 Kotlin 1.9.0,则使用 hilt 2.48

在 Hilt 版本中进行以下更新:

在项目级 build.gradle 中

    plugins{
id("com.google.dagger.hilt.android") version "2.48" apply false
}  
Run Code Online (Sandbox Code Playgroud)

在应用程序级别的build.gradle中

 plugins{
 id ("kotlin-kapt")
    id("com.google.dagger.hilt.android")
}

dependencies{
     implementation("com.google.dagger:hilt-android:2.48")
        kapt("com.google.dagger:hilt-android-compiler:2.48")
    }
Run Code Online (Sandbox Code Playgroud)


小智 20

我遇到了同样的错误。我更改了两个 gradle 文件,它对我有用。

项目摇篮

plugins {
   
    //    dependencies for dagger hilt
    id 'com.google.dagger.hilt.android' version '2.42' apply false

}
Run Code Online (Sandbox Code Playgroud)

模块等级

dependencies {

    implementation 'com.google.dagger:hilt-android:2.42'
    kapt 'com.google.dagger:hilt-compiler:2.42'
    implementation("androidx.hilt:hilt-navigation-fragment:1.0.0")

}
Run Code Online (Sandbox Code Playgroud)


Shu*_*gps 20

如果有人仍然面临与 kotlin 和 hilt 版本不匹配相关的问题,这里是为我工作的最新版本的 hilt vs kotlin

项目级别:

plugins {
    id("com.android.application") version "8.1.2" apply false
    id("org.jetbrains.kotlin.android") version "1.9.0" apply false
    id("com.google.dagger.hilt.android") version "2.48.1" apply false
}
Run Code Online (Sandbox Code Playgroud)

应用级别:

plugins {
    ...
    id("kotlin-android")
    id("kotlin-kapt")
    id("com.google.dagger.hilt.android")
}

kotlinOptions {
        jvmTarget = "1.8"
    }

dependencies {

    implementation("androidx.core:core-ktx:1.12.0")

    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
    implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")

    implementation("com.google.dagger:hilt-android:2.48.1")
    kapt("com.google.dagger:hilt-android-compiler:2.48.1")
    kapt("androidx.hilt:hilt-compiler:1.0.0")
    implementation("androidx.hilt:hilt-navigation-fragment:1.0.0")

}
Run Code Online (Sandbox Code Playgroud)

我浪费了大约 30 个小时来找出正确的最新版本和兼容性,但我却遇到了相同的报告错误。希望这会对某人有所帮助!


小智 17

如果您使用 kotlin 版本 1.8.0 那么

在项目级别的build.gradle中更改hilt版本

id 'com.google.dagger.hilt.android' version '2.44' apply false
Run Code Online (Sandbox Code Playgroud)

在应用程序级别的build.gradle中

implementation "com.google.dagger:hilt-android:2.44"
kapt "com.google.dagger:hilt-compiler:2.44"
Run Code Online (Sandbox Code Playgroud)


Sid*_*gil 8

更新:Kotlin DSL

使用 dagger 版本2.48ksp解决了这个问题。使用Java版本17

build.gradle.kts(项目)

plugins {
    ...

    id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
    id("com.google.dagger.hilt.android") version "2.48" apply false
}
Run Code Online (Sandbox Code Playgroud)

构建.gradle.kts(应用程序)

plugins {
   ...   

   id("com.google.dagger.hilt.android")
   id("com.google.devtools.ksp")
}

...

dependencies {
   ...

   implementation("com.google.dagger:hilt-android:2.48")
   ksp("com.google.dagger:hilt-compiler:2.48")
}
Run Code Online (Sandbox Code Playgroud)

旧解决方案

我通过将依赖项版本更新到最新版本并添加此附加依赖项解决了该错误。我在用java version 17

kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0"
Run Code Online (Sandbox Code Playgroud)

build.gradle(项目级别)

plugins {
   ...

   id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
   id 'com.google.dagger.hilt.android' version '2.48' apply false
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(应用程序级别)

plugins {
   ...   
   
   id 'kotlin-kapt'
   id 'com.google.dagger.hilt.android'
}

...

dependencies {
   ...

   implementation "com.google.dagger:hilt-android:2.48"
   kapt "com.google.dagger:hilt-compiler:2.48"
   kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0"
}

kapt {
    correctErrorTypes true
}
Run Code Online (Sandbox Code Playgroud)


Min*_*yên 6

目前 Kotlin 1.5.21 与 Hilt 2.38 兼容。

dependencies {
    ...
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
    classpath "com.google.dagger:hilt-android-gradle-plugin:2.38"
}
Run Code Online (Sandbox Code Playgroud)

  • 伙计,安卓开发很糟糕。你花费了超过实际工作 50% 的时间来解决依赖和兼容性问题。 (14认同)
  • 感谢您的回答,升级刀柄库有时是一场噩梦。 (4认同)
  • 这些版本也适合我: kotlin:1.6.0 , hilt:2.40.5 (2认同)
  • 这对我有用,我使用了 @NazaninNasab 提供的答案,因为它有更多最新版本。干杯 (2认同)
  • 我要添加:**访问 Gradle 构建设置页面并验证 build.gradle 文件中的所有内容都是最新的**。Android Studio 的建议只帮助我更新了一部分,但 Hilt Gradle 插件没有,所以我最终得到了导致错误的新旧版本号。 (2认同)

Zai*_*kir 6

感谢您的回答,我必须做一些调整才能为我工作,因为我使用的是北极狐,希望这个答案也能有所帮助

构建.gradle(项目)

buildscript {
ext {
    compose_version = '1.0.0'
}
repositories {
    google()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:7.1.0-alpha05'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10"
    classpath "com.google.dagger:hilt-android-gradle-plugin:2.37"
}
}
Run Code Online (Sandbox Code Playgroud)

构建.gradle(应用程序)

//Dagger - Hilt
implementation "com.google.dagger:hilt-android:2.34-beta"
kapt "com.google.dagger:hilt-android-compiler:2.34-beta"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
kapt "androidx.hilt:hilt-compiler:1.0.0"
implementation 'androidx.hilt:hilt-navigation-compose:1.0.0-alpha03'
Run Code Online (Sandbox Code Playgroud)


Vla*_*kin 6

将这一行添加到 build.gradle 依赖项对我有帮助:

kapt("org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0")
Run Code Online (Sandbox Code Playgroud)

https://youtrack.jetbrains.com/issue/KT-45885


小智 5

如果有任何解决方案解决了您的问题。转到https://dagger.dev/hilt/gradle-setup,在将 Hilt 与 Kotlin 结合使用部分中,复制中提到的版本dependenciesbuild.gradle相应更新