android 编译项目时出现匕首柄错误

z5btuh9x  于 2024-01-04  发布在  Android
关注(0)|答案(2)|浏览(161)

使用匕首柄时出现以下错误
不支持的元数据版本。检查您的Kotlin版本是否>= 1.0:java.lang。IllegalStateException:不支持的元数据版本。检查您的Kotlin版本是否>= 1.0
请注意,我已经遵循了stackoverflow和其他文档Hilt Unsupported metadata version in Kotlin中的一些主题
Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
https://github.com/google/dagger/issues/2379
使用以下应用程序gradle配置

  1. compileSdk 32
  2. defaultConfig {
  3. applicationId "com.test.plantdemo"
  4. minSdk 21
  5. targetSdk 32
  6. versionCode 1
  7. versionName "1.0"
  8. }

字符串
Android插件

  1. plugins {
  2. id 'com.android.application'
  3. id 'org.jetbrains.kotlin.android'
  4. id 'kotlin-kapt'
  5. id 'dagger.hilt.android.plugin'
  6. }


应用程序级别依赖性

  1. dependencies {
  2. implementation "androidx.work:work-runtime-ktx:2.5.0"
  3. kapt 'androidx.hilt:hilt-compiler:1.0.0'
  4. implementation 'androidx.hilt:hilt-work:1.0.0'
  5. kapt "com.google.dagger:hilt-android-compiler:2.35.1"
  6. kapt "com.google.dagger:hilt-compiler:2.35.1"
  7. implementation "com.google.dagger:hilt-android:2.35.1"
  8. }


我使用的顶级依赖项

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


顶级gradle插件

  1. plugins {
  2. id 'com.android.application' version '7.2.1' apply false
  3. id 'com.android.library' version '7.2.1' apply false
  4. id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
  5. id 'com.google.dagger.hilt.android' version '2.41' apply false
  6. }


错误窗口显示以下错误
处理未完成。
有关详细信息,请参见上面的错误。任务“:app:kaptExecutionGKotlin”执行失败。执行org.jetbrains.kotlin.gradle.internal. KaptWithoutKotlinc Task $KaptExecutionWorkAction java.lang.reflect. aptcationTargetException时发生错误(无错误消息)
添加库后执行的步骤
Step1:Android应用类

  1. @HiltAndroidApp
  2. class PlantApplication: Application() {
  3. }


第二步:模块类

  1. @Module
  2. @InstallIn(SingletonComponent::class)
  3. object MainModule {
  4. }


步骤3:查看模型

  1. @HiltViewModel
  2. class PlantListBaseViewModel @Inject constructor(): ViewModel() {
  3. }


步骤4:片段

  1. @AndroidEntryPoint
  2. class PlantListBaseFragment : Fragment() {
  3. }

blmhpbnm

blmhpbnm1#

我建议使用最新的稳定版Dagger。我的版本是:

  1. classpath 'com.google.dagger:hilt-android-gradle-plugin:2.42'
  2. classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"
  3. implementation "com.google.dagger:dagger-android-support:2.42"
  4. implementation "com.google.dagger:hilt-android:2.42"

字符串
我希望它能起作用

更新:

如果你想知道原因,这里:
看起来Dagger需要将kotlin-metadata-jvm库更新到0.4.0,它支持从Kotlin 1.7阅读元数据,当前版本是0.3.0,您可以通过强制更新transitive dep来解决这个问题,可能直接取决于它,类似于这样:

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


你可以在这里找到:https://github.com/google/dagger/issues/3383

展开查看全部
oyjwcjzk

oyjwcjzk2#

看起来他们在刀柄2.50中对齐了匕首中所需的元数据版本-在我的情况下更新它起作用了(虽然在2.44中没有起作用)

相关问题