How can I obfuscate only com.foo.* and com.bar.* (ProGuard)?

alex2k8 picture alex2k8 · Dec 27, 2010 · Viewed 11k times · Source

I want to obfuscate only some packages:

com.foo.*
com.bar.*

I have tried

-keepclasseswithmembers class **, !com.foo.**, !com.bar.** { *; }

and

-keepclasseswithmembers class !com.foo.** { *; }
-keepclasseswithmembers class !com.bar.** { *; }

In both cases the classes from com.foo.* and com.bar.* was NOT obfuscated.

Answer

Eric Lafortune picture Eric Lafortune · Dec 28, 2010

This should work

-keep class !com.foo.**,!com.bar.** { *; }

You can find a summary of the various -keep options at http://proguard.sourceforge.net/manual/usage.html#keepoverview

You can find the explanation of ProGuard's regular expressions at http://proguard.sourceforge.net/manual/usage.html#filters