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

Hilt多模块集成开启minifyEnabled的AAR文件时出现类型转换错误

问题根因

该异常本质是Hilt生成的注入器类、组件类被混淆规则错误重命名/移除,或多模块混淆规则隔离导致的类型不匹配:源码依赖module时全项目混淆规则合并执行,Hilt相关类会被默认保留;独立打包开启混淆的AAR时,module的混淆规则默认不会同步到主App,就会出现类转换异常。另外错误日志中出现的com.com.mypackage双com前缀,也可能存在包名配置错误的问题。

排查&解决步骤
  • 第一步:补全module模块的Hilt混淆规则
    在module模块的proguard-rules.pro中添加Hilt专用混淆规则,保留生成的注入器、组件类:
# 保留Hilt生成的核心组件类
-keep class * extends dagger.hilt.internal.GeneratedComponent
-keep class * implements dagger.hilt.internal.GeneratedEntryPoint
-keep @dagger.hilt.EntryPoint class * { *; }
-keep @dagger.hilt.AndroidEntryPoint class * { *; }
# 保留生成的注入器类
-keep class **_GeneratedInjector { *; }
# 替换为你项目的实际包名,保留Hilt生成的组件实现类
-keep class com.mypackage.DaggerMainApplication_HiltComponents** { *; }
  • 第二步:配置module导出混淆规则给依赖方
    在module的build.gradle中配置consumerProguardFiles,将module的混淆规则打包进AAR,主App依赖时会自动应用这些规则:
android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // 导出混淆规则给依赖该AAR的工程
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
}

配置完成后重新打包AAR替换原有依赖即可。

  • 第三步:检查包名配置错误
    优先核对错误日志中出现的com.com.mypackage双前缀问题,确认module、app的applicationId、namespace配置,以及@AndroidEntryPoint注解的Activity所在包名是否正确,避免包名不匹配导致类加载异常。

  • 第四步:验证问题定位(可选)
    临时关闭module的minifyEnabled打包AAR测试,如果运行正常即可100%确认是混淆规则配置问题,再逐步调整规则覆盖所有Hilt相关类即可。

内容的提问来源于stack exchange,提问作者Azay Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:57:03