7

我是使用 Proguard 和 Dagger for 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

但这似乎无法解决问题。建议?提前致谢。

4

3 回答 3

2

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

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

于 2013-03-21T21:50:01.897 回答
0

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

-keepattributes *Annotation*
于 2013-03-14T10:21:46.247 回答
0

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

于 2013-08-09T14:58:02.060 回答