多模块Android项目Hilt报错:dagger.hilt.android.internal.projectType未识别
解决Hilt多模块Android项目中“dagger.hilt.android.internal.projectType is not a recognized Hilt option”错误
核心原因分析
这个错误基本是由Hilt依赖/插件版本不统一、手动配置了插件自动注入的参数,或是模块插件应用顺序错误导致的,以下是针对性修复步骤:
具体修复操作
1. 强制统一所有模块的Hilt版本
在根build.gradle中定义全局Hilt版本,避免模块间版本差异:
buildscript { ext { hilt_version = "2.48" // 替换为当前稳定版本,禁止混用不同版本 } dependencies { classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" } }
随后在app和dev模块的build.gradle中,统一引用该版本:
// 模块内依赖配置 implementation "com.google.dagger:hilt-android:$hilt_version" kapt "com.google.dagger:hilt-compiler:$hilt_version"
2. 修正插件应用逻辑
每个需要使用Hilt的模块(app、dev),必须按正确顺序应用插件:
plugins { id 'com.android.application' // app模块用此标识,dev若为library则用com.android.library id 'kotlin-android' id 'kotlin-kapt' // 必须在hilt插件之前应用 id 'dagger.hilt.android.plugin' }
注意:不要在根build.gradle的allprojects或其他全局块中重复应用Hilt插件,仅在需要的模块单独配置。
3. 删除手动添加的projectType参数
检查所有模块的kapt配置块,若存在类似以下代码,立即删除:
kapt { arguments { arg("dagger.hilt.android.internal.projectType", "application") } }
dagger.hilt.android.internal.projectType是Hilt插件根据模块类型(application/library)自动注入的参数,手动配置会触发重复识别错误。
4. 验证Application类的Hilt注解
确保MyApplication.kt的注解配置正确,且仅在app模块中使用@HiltAndroidApp:
@HiltAndroidApp class MyApplication : Application() { // 业务代码 }
同时在AndroidManifest.xml中指定该Application:
<application android:name=".MyApplication" <!-- 其他配置项 --> >
dev模块作为library,无需配置@HiltAndroidApp,仅在需要依赖注入的类上使用@AndroidEntryPoint等注解即可。
5. 清理缓存并重建项目
执行以下操作彻底清除缓存:
- Android Studio中点击
File -> Invalidate Caches... -> Invalidate and Restart - 终端执行
./gradlew clean build(Windows系统用gradlew clean build)
额外检查点
- 确保所有模块的
compileSdk、targetSdk版本完全一致,避免依赖兼容性问题 - 确认dev模块的
build.gradle中未错误引入仅app模块可用的Hilt配置
内容的提问来源于stack exchange,提问作者Hilal
相关产品推荐
相关产品推荐

