我不熟悉将 Proguard 和 Dagger 用于 Android 应用程序,所以如果有人能给我一些指导,我将不胜感激。
Proguard 和 Dagger 已在应用程序中实现。当应用程序通过 Debug模式(即从 Eclipse 推送)安装时,运行应用程序没有问题。但是,当我运行应用程序的发布版本时,它崩溃并显示以下跟踪:
No injectable members on com.example.test.d. Do you want to add an injectable constructor? required by com.example.test.d com.example.test.SampleActivity.a
No injectable members on com.b.a.b. Do you want to add an injectable constructor? required by com.b.a.b com.example.test.SampleActivity.b
at dagger.internal.h.a(ThrowingErrorHandler.java:34)
at dagger.internal.Linker.a(Linker.java:136)
at dagger.d.a(ObjectGraph.java:264)
at dagger.d.a(ObjectGraph.java:238)
at com.example.test.SampleApplication.a(SampleApplication.java:24)
我遵循了以下建议:https://plus.google.com/108620120050432268974/posts/AAjvwg3Hmgg ,通过在 proguard-project.txt 中实现以下内容:
-keep class * extends dagger.internal.Binding
-keep class * extends dagger.internal.ModuleAdapter
-keep class * extends dagger.internal.StaticInjection
但似乎并没有解决问题。建议?提前致谢。
最佳答案
Proguard 和 dagger(预)编译在发布版本中似乎不能很好地协同工作。参见 https://plus.google.com/117210567825404150882/posts/HGjnJJHbfMj
“问题”是未混淆的包名称将被编译到类中。
关于Android 应用程序在使用 Proguard 和 Dagger 的 Release Build 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143872/