Proguard问题与Roboguice 3

时间:2015-11-09 18:27:51

标签: android proguard roboguice

我试图导入Roboguice但是当我这样做时,我得到了一堆Proguard错误。

我已经查看了其他问题,但没有一个答案似乎对我有用。我正在尝试导入Roboguice 3以使用看起来需要的Coinbase Android SDK。它似乎正在寻找我不使用的sherlock库。

我的gradle错误很长,因此可以找到here

我的Proguard是:

-dontobfuscate
-dontoptimize
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dump ../bin/class_files.txt
-printseeds ../bin/seeds.txt
-printusage ../bin/unused.txt
-printmapping ../bin/mapping.txt

# The -optimizations option disables some arithmetic simplifications that Dalvik 1.0 and 1.5 can't handle.
-optimizations !code/simplification/arithmetic

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep class com.google.inject.Binder
-keepclassmembers class * {
    @com.google.inject.Inject <init>(...);
}
# There's no way to keep all @Observes methods, so use the On*Event convention to identify event handlers
-keepclassmembers class * {
    void *(**On*Event);
}
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}
-keep public class roboguice.**
-dontwarn javax.**
-dontwarn com.actionbarsherlock.internal.**
-dontwarn robojuice.activity.**

1 个答案:

答案 0 :(得分:0)

要使最终警告消失,它将完成编译:

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

但是,这只有在真正不需要该库(以及它在Warning:行中提及的其他类)并且不尝试加载它时才有效。如果它确实在运行时尝试,它将崩溃。

与往常一样,测试所有代码路径,因为在运行时出现依赖项注入错误很常见,尤其是在使用ProGuard时。