Android Roboguice不与Proguard合作

时间:2015-03-26 12:53:23

标签: android proguard roboguice

这是我的proguard-project.txt:

-keep class com.google.inject.** { *; }
-keep class javax.inject.** { *; }
-keep class javax.annotation.** { *; }
-keep class roboguice.** { *; }

-keepattributes Signature
-keepattributes *Annotation*
-keep class roboguice.**

-keep class com.google.inject.** { *; }


-keepclassmembers class * {
    @com.google.inject.Inject <fields>;
    @com.google.inject.Inject <init>(...);
}
-keep class javax.inject.** { *; }
-keep class javax.annotation.** { *; }


-keep class com.appmanager.ui.activities.** { *; }
-keep class com.appmanager.ui.fragments.** { *; }

我收到500条警告: http://pastebin.com/HihG9c66

如何解决此警告并防止代码崩溃?

1 个答案:

答案 0 :(得分:0)

RoboGuice的当前(保持最新)官方ProGuard设置列表可在https://github.com/roboguice/roboguice/wiki/ProGuard

获取

对我来说,这些部分要么不在那个文件中,要么不是默认的,我最初是跳过的,是:

-keep class com.mynamespace.MyRoboGuiceModule { *; }
-keep class com.mynamespace.SomeObjectThatGetsInjected { *; }
-dontobfuscate

我真的不喜欢删除混淆。但它使得ProGuard更容易工作,而无需逐个完成每个课程。 (从公共崩溃报告中映射堆栈跟踪的步骤少了一步。)

您还可以在上面添加以下内容以使其进行编译,但它可能仍会在运行时崩溃。因此,在编译的发布版本中始终测试所有代码路径

-dontwarn roboguice.**
-dontwarn org.roboguice.**