I have a working dexguard project that is working okay. Now I want to obfuscate 2 classes because of a bug with appcompat-v7 v21.0.0. The problem is that I am not able to do it. I think there are contradicting rules avoiding the obfuscation. Here is my proguard file:
-dalvik
-repackageclasses ''
-allowaccessmodification
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keepresourcexmlattributenames
manifest/installLocation,
manifest/versionCode,
manifest/application/*/intent-filter/*/name
-encryptnativelibraries lib/**/libnativeBatterySupport.so
-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
-keepclasseswithmembernames class * {
native <methods>;
}
-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*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keep public class * extends android.app.Fragment {
<init>(...);
}
-keep public class * extends android.support.v4.app.Fragment {
<init>(...);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
# Preserve Android support libraries` classes and interfaces
#-keep class android.support.** { *; }
#BIG HACK TO AVOID A CRASH BECAUSE OF SHITTY appcompat 21.
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
-keep interface android.support.** { *; }
As you see what I'm trying to obfuscate is android.support.v7.internal.view.menu.**
. Could anybody suggest why the obfuscation is not working for this subset of classes?