升级至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:彻底清理缓存并重建项目
之前的错误编译缓存会干扰修复,一定要执行以下操作:
- 终端执行:
./gradlew clean - Android Studio里点击
Build -> Rebuild Project - 最后点击
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
相关产品推荐
相关产品推荐

