我刚开始在Android应用程序中使用Proguard和Dagger,所以如果有人能给我一些指导,我将非常感激。
Proguard和Dagger已被实现到应用程序中。当应用程序通过调试模式安装(即从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
问题是未混淆的包名将被编译到类中
您是否已将此添加到proguard配置文件中?
-keepattributes *Annotation*
看看https://stackoverflow.com/a/18109765/654026,也许它能帮到你。在这里,你将看到我的应用程序的proguard配置的一些细节,它允许我在使用Dagger时跳过应用程序崩溃。