【问题标题】:Android Roboguice not working with ProguardAndroid Roboguice 不能与 Proguard 一起使用
【发布时间】:2015-03-26 12:53:23
【问题描述】:

这是我的 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

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

【问题讨论】:

    标签: android proguard roboguice


    【解决方案1】:

    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.**
    

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2015-06-02
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多