使用匕首柄时出现以下错误
不支持的元数据版本。检查您的 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() {
}
我建议使用最新稳定版本的 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"
}
他们似乎在刀柄 2.50 中对齐了 dagger 中所需的元数据版本 - 在我的情况下更新它有效(尽管在 2.44 上不起作用)