Some Noob Student
Some Noob Student

Reputation: 14594

When using Proguard, do you need a separate config for each referenced library?

My application has references to HoloEverywhere and SherlockActionBar, both which are in-workspace projects. When I enabled Proguard for the application only, it crashes giving these errors:

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)

Is this because I only enabled Proguard for the app and not the other in-workspace projects HE and ABS?

I am using the default proguard-project.txt in the sdk and did not add any additional rules.

Upvotes: 5

Views: 1237

Answers (2)

Chathura Wijesinghe
Chathura Wijesinghe

Reputation: 3349

this also will help

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

Upvotes: 0

Some Noob Student
Some Noob Student

Reputation: 14594

No you do not.

Use these rules to keep the referenced classes un-obfuscated.

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

Upvotes: 15

Related Questions