You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至Kotlin 1.6.0时Android Hilt框架出现异常的解决方案咨询

解决Hilt代理类找不到与kapt版本兼容问题的方案

先直接说核心解决方案,再给你拆解原因:

步骤1:恢复Kotlin项目专属的kapt依赖,放弃annotationProcessor

你的项目是Kotlin开发的,Hilt、Room这类需要处理Kotlin注解的库必须用kapt,不能用annotationProcessor——后者只适用于纯Java项目,无法处理Kotlin代码中的注解,这就是你找不到Hilt_NetworkUsageApplication代理类的根本原因。

修改应用级build.gradle的依赖部分,把所有替换成annotationProcessor的地方改回kapt:

dependencies {
    ...
    // Hilt相关恢复kapt
    implementation "com.google.dagger:hilt-android:$hilt_version"
    kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
    // Hilt Work恢复kapt
    implementation("androidx.hilt:hilt-work:1.0.0")
    kapt("androidx.hilt:hilt-compiler:1.0.0")
    // Room相关保留一行kapt即可(你之前重复写了两次)
    implementation("androidx.room:room-runtime:$room_version")
    kapt("androidx.room:room-compiler:$room_version")
    implementation("androidx.room:room-ktx:$room_version")
    ...
}

步骤2:解决kotlinx.metadata.jvm版本兼容问题

换回kapt后出现的NoSuchMethodError,是因为Kotlin 1.6.0对应的kotlinx-metadata-jvm版本是0.3.0,而旧版Hilt可能依赖了更低的版本,导致方法签名不匹配。你可以通过两种方式修复:

方式A:升级Hilt到兼容Kotlin 1.6的版本

把项目级build.gradle里的hilt_version升级到2.41(或更高的兼容版本),这个版本原生适配Kotlin 1.6:

buildscript {
    ext {
        ...
        hilt_version = '2.41'
        ...
    }
}

同时确保项目级build.gradle的插件版本和这个版本一致:

plugins {
    ...
    id 'com.google.dagger.hilt.android' version "$hilt_version" apply false
}

方式B:强制指定kotlinx-metadata-jvm版本

如果不想升级Hilt,就在项目级build.gradle里添加强制版本规则,让所有依赖都使用适配Kotlin 1.6的版本:

allprojects {
    configurations.all {
        resolutionStrategy.force "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0"
    }
}

步骤3:彻底清理缓存并重建项目

之前的错误编译缓存会干扰修复,一定要执行以下操作:

  1. 终端执行:./gradlew clean
  2. Android Studio里点击Build -> Rebuild Project
  3. 最后点击File -> Invalidate Caches... -> Invalidate and Restart,清除IDE缓存

为什么会出现这些问题?

  • 用annotationProcessor替代kapt:kapt是Kotlin官方的注解处理器工具,专门处理Kotlin代码中的注解;而annotationProcessor只能处理Java代码,所以Hilt无法生成代理类,导致ClassNotFoundException。
  • kotlinx.metadata.jvm版本不兼容:Kotlin 1.6.0更新了kotlinx.metadata.jvm的构造方法签名,旧版Hilt依赖的低版本库没有这个方法,就会抛出NoSuchMethodError。

按照上面的步骤操作后,问题应该能解决。如果还是不行,可以提供项目级build.gradle的完整内容和gradle.properties的配置,我再帮你排查。暂时不需要发布到其他平台,这个问题属于常见的版本兼容问题,按上述方案就能解决。

内容的提问来源于stack exchange,提问作者Lucas Kivi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:54:42