编译项目时出现 Dagger-hilt 错误

问题描述 投票:0回答:2

使用匕首柄时出现以下错误

不支持的元数据版本。检查您的 Kotlin 版本 >= 1.0:java.lang.IllegalStateException:不支持的元数据版本。检查您的 Kotlin 版本是否 >= 1.0

请注意,我已经关注了 stackoverflow 和其他文档中的一些主题 Hilt Kotlin 中不支持元数据版本

不受支持的元数据版本。检查您的 Kotlin 版本是否 >= 1.0:java.lang.IllegalStateException

https://github.com/google/dagger/issues/2379

使用下面的应用程序gradle配置

 compileSdk 32

    defaultConfig {
        applicationId "com.test.plantdemo"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"
}

安卓插件

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

应用程序级别依赖

   dependencies {
implementation "androidx.work:work-runtime-ktx:2.5.0"
    kapt 'androidx.hilt:hilt-compiler:1.0.0'
    implementation 'androidx.hilt:hilt-work:1.0.0'
    kapt "com.google.dagger:hilt-android-compiler:2.35.1"
    kapt "com.google.dagger:hilt-compiler:2.35.1"
    implementation "com.google.dagger:hilt-android:2.35.1"
}

我使用的顶级依赖项

 dependencies {
        // other plugins...
        //classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0"
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.40'
    }

顶级 gradle 插件

plugins {
    id 'com.android.application' version '7.2.1' apply false
    id 'com.android.library' version '7.2.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
    id 'com.google.dagger.hilt.android' version '2.41' apply false
}

错误窗口显示以下错误


[Hilt] 处理未完成。

有关详细信息,请参阅上面的错误。 任务“:app:kaptDebugKotlin”执行失败。 执行 org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction 时出错 java.lang.reflect.InitationTargetException(无错误消息)


添加库后我遵循的步骤

Step1:Android应用程序类

@HiltAndroidApp
class PlantApplication: Application() {
}

Step2:模块类

@Module
@InstallIn(SingletonComponent::class)
object MainModule {
}

第三步:查看模型

@HiltViewModel
class PlantListBaseViewModel @Inject constructor(): ViewModel()  {
}

第四步:片段

@AndroidEntryPoint
class PlantListBaseFragment : Fragment() {
}
android kotlin gradle dependency-injection dagger-hilt
2个回答
11
投票

我建议使用最新稳定版本的 Dagger。我的正在使用这些版本:

classpath 'com.google.dagger:hilt-android-gradle-plugin:2.42'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"

implementation "com.google.dagger:dagger-android-support:2.42"
implementation "com.google.dagger:hilt-android:2.42"

希望能成功

更新:

如果你想知道原因,请看这里:

看起来 Dagger 需要将 kotlin-metadata-jvm 库更新到 0.4.0,它支持从 Kotlin 1.7 读取元数据,当前版本是 0.3.0,您可以通过强制更新传递 dep 来解决该问题,可能直接取决于它,像这样:

dependencies {
  //Not a processor, but forces Dagger to use newer metadata lib
  kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.4.2"
}

您可以在这里关注:https://github.com/google/dagger/issues/3383


0
投票

他们似乎在刀柄 2.50 中对齐了 dagger 中所需的元数据版本 - 在我的情况下更新它有效(尽管在 2.44 上不起作用)

© www.soinside.com 2019 - 2024. All rights reserved.