Karim Varela
Karim Varela

Reputation: 7652

How to use Proguard with Android Annotations?

Does anybody know how to use Proguard with Android Annotations?

I found this resource: https://code.google.com/p/androidannotations/wiki/ProGuard

But when I use the proguard.cfg file from there, I get the following error:

proguard.ParseException: Unknown option '*' in line 6 of file
'/Users/jabdulius/Documents/Dropbox/workspace-tinder/Tinder/proguard.cfg'

Here's the proguard.cfg file I copied from the link:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/ *,!class/merging/ *

-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 public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

Upvotes: 2

Views: 3994

Answers (2)

CodeShane
CodeShane

Reputation: 6510

When you copy and paste from the website, you may notice your paste includes spaces before the asterisks that were not present in the original (a minor formatting error).. simply remove the two spaces, changing the following line:

-optimizations !code/simplification/arithmetic,!field/ *,!class/merging/ *

to match this:

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

You'll also note, as Eric has said (and he would know best!!) the newer versions of ADT include a default proguard configuration referenced in new project.properties:

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

Uncommenting the line (remove the #)will load the default properties (proguard-android.txt) and then override it with any changes you make in your project proguard-project.txt.

Those default properties include many of the rules that Android Annotations project recommends, and are sufficient for most basic apps.

Upvotes: 5

Eric Lafortune
Eric Lafortune

Reputation: 45678

As of Android SDK r20, the ProGuard configuration file is called proguard-project.txt, and it can be empty to start with. It only needs to contain project-specific settings. Try upgrading your SDK and your project.

Upvotes: 3

Related Questions