使用Proguard时,是否需要为每个引用的库单独配置?

时间:2012-11-15 16:55:51

标签: android proguard

我的应用程序引用了HoloEverywhere和SherlockActionBar,它们都是工作空间项目。当我为应用程序启用Proguard时,崩溃会导致这些错误:

11-15 11:50:11.090: E/AndroidRuntime(24823): Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.app.Activity, int]
11-15 11:50:11.090: E/AndroidRuntime(24823):    at com.actionbarsherlock.a.a(Unknown Source)
11-15 11:50:11.090: E/AndroidRuntime(24823):    at org.holoeverywhere.a.a.l(Unknown Source)
11-15 11:50:11.090: E/AndroidRuntime(24823):    at org.holoeverywhere.a.a.setContentView(Unknown Source)

这是因为我只为应用程序启用了Proguard而不启用其他工作空间项目HE和ABS吗?

我在sdk中使用默认的proguard-project.txt,并没有添加任何其他规则。

2 个答案:

答案 0 :(得分:15)

不,你没有。

使用这些规则来保持引用的类不被混淆。

-keep class com.actionbarsherlock.** {*;}
-keep class org.holoeverywhere.** {*;}

答案 1 :(得分:0)

这也有帮助

## ActionBarSherlock 4.4.0 specific rules ##

-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keepattributes *Annotation*

## hack for Actionbarsherlock 4.4.0, see        https://github.com/JakeWharton/ActionBarSherlock/issues/1001 ##
-dontwarn com.actionbarsherlock.internal.**