Android App使用Proguard和Dagger在Release Build上崩溃

时间:2013-02-28 19:19:14

标签: android proguard runtimeexception dagger

我是初次使用Proguard和Dagger的Android应用程序,所以如果有人能给我一些指示,我真的很感激。

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

但它似乎没有解决问题。建议?提前致谢。

3 个答案:

答案 0 :(得分:2)

Proguard和dagger(pre)-compilation在发布版本中似乎不能很好地协同工作。见https://plus.google.com/117210567825404150882/posts/HGjnJJHbfMj

“问题”是非混淆的包名称将被编译到类中。

答案 1 :(得分:0)

您是否已将其添加到proguard配置文件中?

-keepattributes *Annotation*

答案 2 :(得分:0)

请查看https://stackoverflow.com/a/18109765/654026以防它帮助您。在那里,您将看到有关我的应用程序的proguard配置的一些详细信息,这使我可以在使用Dagger时跳过应用程序崩溃。