Roboguice 3 的 Proguard 问题

Proguard issues with Roboguice 3

我正在尝试导入 Roboguice,但在导入时出现了一堆 Proguard 错误。

我查看了其他问题,但 none 的答案似乎对我有用。我正在尝试导入 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.**

要消除最后的警告,以便完成编译:

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

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

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