Android 应用程序在使用 Proguard 和 Dagger 的 Release Build 上崩溃

标签 android proguard runtimeexception dagger

我不熟悉将 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/

相关文章:

java - Proguard 混淆 + getJarEntry

android - 使用 proguard Android 后数据库崩溃

java-8 - Java8 方法引用的 Proguard 混淆在运行时中断

java - "RuntimeException: native typeface cannot be made"加载字体时

android - 以编程方式检测 onePlus One 设备中软导航栏的可用性?

android - 为 FileProvider 动态生成文件路径

java - 运行时异常 - 功能尚未实现

java - HTTP 状态 500 - 请求处理失败;嵌套异常是 java.lang.RuntimeException : Could not find the TestPlan class

android - Github app的进度条是如何实现的

Android:以编程方式安装应用程序时使用窗口完成操作