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

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

使用匕首柄时出现以下错误
不支持的元数据版本。检查您的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配置

compileSdk 32

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

字符串
Android插件

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
}


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

@HiltAndroidApp
class PlantApplication: Application() {
}


第二步:模块类

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


步骤3:查看模型

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


步骤4:片段

@AndroidEntryPoint
class PlantListBaseFragment : Fragment() {
}

blmhpbnm

blmhpbnm1#

我建议使用最新的稳定版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,您可以通过强制更新transitive 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

oyjwcjzk

oyjwcjzk2#

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

相关问题