Dagger Hilt ProGuard规则配置异常:缺失生成类问题求助
在Android项目中使用Dagger Hilt做依赖注入时,碰到了ProGuard相关的配置问题。试过多种方案,甚至套用了Dagger仓库推荐的ProGuard规则,构建应用时还是持续出现Dagger Hilt生成类缺失的错误。
报错信息
Missing class com.example.projectone.Hilt_GithubUserApplication (referenced from: void com.example.projectone.GithubUserApplication.
() and 1 other context)
Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in missing_rules.txt (see the file above)
Missing class com.example.projectone.ui.main.Hilt_MainActivity (referenced from: void com.example.projectone.ui.main.MainActivity.() and 5 other contexts)
Missing class com.example.projectone.ui.userdetail.Hilt_DetailUserActivity (referenced from: void com.example.projectone.ui.userdetail.DetailUserActivity.() and 5 other contexts)
Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.utils.b: Missing class com.example.projectone.Hilt_GithubUserApplication (referenced from: void com.example.projectone.GithubUserApplication.() and 1 other context)
当前项目配置文件
proguard-rules.pro
# Keep file R and Manifest -keep class **.R -keep class **.R$* {*;} -keep class **.BuildConfig {*;} -keep class **.Manifest {*;} -keep class androidx.constraintlayout.motion.widget.KeyAttributes { *; } # Keep Dependency Injection Framework related classes and methods -keep class dagger.hilt.** { *; } -keep class javax.inject.** { *; } -keep class javax.annotation.** { *; } # Keep Model and Repository Classes -keep class com.example.core.data.model.** { *; } -keep class com.example.core.data.repo.** { *; } # Keep ViewModels -keep class * extends androidx.lifecycle.ViewModel # Keep Parcelable Classes -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } # Keep UI-related classes -keep class com.example.ui.activity.** { *; } -keep class com.example.ui.fragment.** { *; } -keep class com.example.service.** { *; } # Menjaga semua kelas dalam paket tertentu -keep class com.example.package.** { *; } # Menjaga semua kelas yang disebutkan dalam file tertentu #-keep @com.example.rules.txt # Menjaga kelas model -keep class com.example.model.** { *; } # Menjaga kelas service -keep class com.example.service.** { *; } # Menjaga kelas-kelas yang diperlukan untuk penanganan SSL/TLS -keep class okhttp3.internal.platform.ConscryptPlatform {*;} -keep class okhttp3.internal.platform.OpenJSSEPlatform {*;} -keep class org.bouncycastle.** {*;} -keep class org.conscrypt.** {*;} -keep class org.openjsse.** {*;} # Keep classes required by OpenJSSE -keep class sun.security.x509.** { *; } -keep class sun.util.logging.** { *; } -keep class com.example.projectone.GithubUserApplication { *; } -keep class com.example.projectone.ui.main.MainActivity { *; } -keep class com.example.projectone.ui.userdetail.DetailUserActivity { *; } # Keep classes generated by Hilt -keep class com.example.projectone.*Hilt* { *; } # Keep Hilt generated classes -keep class com.example.projectone.Hilt_* {*;} -keep,allowobfuscation,allowshrinking @dagger.hilt.EntryPoint class * -keep,allowobfuscation,allowshrinking @dagger.hilt.android.EarlyEntryPoint class *
missing_rules.txt
-dontwarn com.example.projectone.Hilt_GithubUserApplication -dontwarn com.example.projectone.ui.main.Hilt_MainActivity -dontwarn com.example.projectone.ui.userdetail.Hilt_DetailUserActivity
求有Dagger Hilt和ProGuard配置经验的开发者提供正确的配置指导,帮忙解决这个问题,感谢支持和时间。
内容的提问来源于stack exchange,提问作者Dzy

