Android Studio中Dagger/Hilt与ProGuard编译失败求助
解决方案:Hilt编译报错「Invalid relative name」
问题根源
这个报错是Hilt生成ProGuard规则文件时,误用了Windows系统的反斜杠\作为路径分隔符,而JAR资源路径要求必须用正斜杠/,导致路径格式不合法。同时你的依赖配置存在冗余项,版本兼容性也可能存在冲突。
分步解决
修正依赖配置错误
打开模块级build.gradle.kts,删除以下无效/冗余依赖:implementation(libs.hilt.android.gradle.plugin):这是Gradle插件,不属于运行时依赖,无需添加到implementationkapt(libs.dagger.android.processor):Hilt编译器已包含Dagger的注解处理逻辑,单独添加会引发冲突
修正后的核心依赖块示例:
dependencies { // ...其他基础依赖 implementation(libs.hilt.android) kapt(libs.hilt.compiler) // ...测试依赖 }调整版本兼容性
Hilt 2.53与AGP 8.7.3、Gradle 8.11.1存在适配问题,建议:- 将Hilt版本升级到2.54(最新稳定版),在
gradle/libs.versions.toml中修改:hiltVersion = "2.54" - 或者降级AGP到8.6.x版本,适配Hilt 2.53的版本要求
- 将Hilt版本升级到2.54(最新稳定版),在
禁用Hilt聚合任务
注释或删除模块级配置中的以下代码:hilt { enableAggregatingTask = true }该聚合任务在Windows环境下容易触发路径分隔符异常。
清理缓存并重建项目
- 执行命令行:
gradlew clean(Windows)或./gradlew clean(Mac/Linux) - 在Android Studio中点击
File > Invalidate Caches... > Invalidate and Restart
- 执行命令行:
额外检查
确认代码中Hilt注解使用规范:
- 自定义Application类添加
@HiltAndroidApp注解 - ViewModel类添加
@HiltViewModel注解 - 需要注入依赖的组件(如Fragment/Activity)添加
@AndroidEntryPoint注解
内容的提问来源于stack exchange,提问作者Robert Koch
相关产品推荐
相关产品推荐

