开启minifyEnabled=true时Android Release包启动崩溃,求Hilt ProGuard规则
Hilt 相关 ProGuard 规则配置
当开启 minifyEnabled = true 后 Release 包启动崩溃,大概率是混淆过程中Hilt相关的类、注解被误删或修改导致的。你需要在 proguard-rules.pro 中添加以下规则:
基础Hilt混淆规则
# Hilt 核心规则 -keep class dagger.hilt.** { *; } -keep class javax.inject.** { *; } -keep class androidx.hilt.** { *; } # 保留Hilt生成的组件类 -keep class *$$HiltComponents { *; } -keep class *$$HiltModules { *; } # 保留带有Hilt注解的类和方法 -keep @dagger.hilt.android.HiltAndroidApp class * -keep @dagger.hilt.android.AndroidEntryPoint class * -keep @dagger.hilt.InstallIn class * -keep @javax.inject.Inject class * -keepclassmembers class * { @javax.inject.Inject <init>(...); @dagger.hilt.android.qualifiers.ApplicationContext <fields>; @dagger.hilt.android.qualifiers.ActivityContext <fields>; } # 保留ViewModel相关的Hilt规则(如果使用Hilt注入ViewModel) -keep class androidx.hilt.lifecycle.HiltViewModelFactory { *; } -keep @androidx.hilt.lifecycle.HiltViewModel class * -keepclassmembers class * extends androidx.lifecycle.ViewModel { @javax.inject.Inject <init>(...); }
额外排查点
如果添加上述规则后仍崩溃,建议检查:
- 确保自定义模块、依赖注入的类没有被混淆,比如自己写的带有
@Module、@Provides注解的类,需要补充:
-keep @dagger.Module class * -keepclassmembers class * { @dagger.Provides <methods>; }
- 查看Crashlytics中的崩溃栈,定位被混淆的具体类,针对性添加保留规则。
内容的提问来源于stack exchange,提问作者Muhammad Hassaan
相关产品推荐
相关产品推荐

