Compose项目集成Dagger Hilt遇ClassNotFoundException问题求助
解决Dagger Hilt找不到Hilt_HiltApplication类的方案
1. 对齐KSP与Kotlin版本兼容性
根目录build.gradle中Kotlin版本为1.9.0,但KSP版本是1.9.10-1.0.13,版本不匹配会导致注解处理器无法正常生成代码。修改根目录配置,确保版本对应:
plugins { id("com.android.application") version "8.2.0" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false // 替换为适配Kotlin 1.9.0的KSP版本 id("com.google.devtools.ksp") version "1.9.0-1.0.12" apply false id("com.google.dagger.hilt.android") version "2.44" apply false }
注:KSP版本格式为
{Kotlin版本}-{KSP版本},需严格匹配两者版本号,避免注解处理器失效。
2. 清理并重新构建项目
缓存可能导致生成的Hilt类未被正确更新,执行以下操作:
- 点击Android Studio工具栏的
Build > Clean Project - 接着执行
Build > Rebuild Project - 或通过终端运行:
./gradlew clean build
3. 补充Hilt插件配置
在模块build.gradle末尾添加Hilt聚合任务配置,确保注解处理器生成的代码被正确整合:
hilt { enableAggregatingTask = true }
4. 验证Application类与Manifest的路径一致性
确认HiltApplication的包名和Manifest中android:name的配置完全匹配。例如类在com.example.hiltapp包下,Manifest需明确写全路径:
<application android:name="com.example.hiltapp.HiltApplication" ...> </application>
避免使用简写的.HiltApplication,防止包名不一致导致类查找失败。
5. 配置多Dex(若项目启用多Dex)
如果项目开启了多Dex,需确保Hilt生成的类被包含在主Dex中:
- 在模块
build.gradle中添加多Dex依赖与配置:android { defaultConfig { multiDexEnabled true } } implementation "androidx.multidex:multidex:2.0.1" - 修改Application类继承
MultiDexApplication:
或在@HiltAndroidApp class HiltApplication : MultiDexApplication()attachBaseContext中初始化MultiDex:@HiltAndroidApp class HiltApplication : Application() { override fun attachBaseContext(base: Context) { super.attachBaseContext(base) MultiDex.install(this) } }
6. 检查注解处理器开关
打开File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,确保勾选Enable annotation processing选项(虽KSP不依赖此设置,但部分场景下开启可避免潜在问题)。
内容的提问来源于stack exchange,提问作者Yauheni Mokich
相关产品推荐
相关产品推荐

