alex2k8
alex2k8

Reputation: 43214

How can I exclude external .jar from obfuscation by Proguard (Android project)?

When I export android project with proguard.cfg, all referenced .jar files are obfuscated as well. How can I exclude some of that .jars from obfuscation?

Upvotes: 26

Views: 26210

Answers (3)

haferblues
haferblues

Reputation: 2253

Using proguard maven plugin I do it like that

<inclusion>
   <groupId>foo.bar</groupId>
   <artifactId>foo-bar</artifactId>
   <library>true</library>
   <filter>!META-INF/**</filter>
</inclusion>

The

<library>true</library> 

lead to the external jar merged into the final jar after the obfuscation. But this might lead to the Manifest being overwritten. I haven't figured out yet how to avoid that the best way.

Upvotes: 1

Eric Lafortune
Eric Lafortune

Reputation: 45648

If you don't want to edit the Ant script, you can add -keep options to proguard.cfg for the classes in those external jars. For instance:

-keep class othercode.** { *; }

Or with a regular expression containing a negator:

-keep class !mycode.** { *; }

The standard Ant script will still merge all referenced jars in the single output jar though.

Upvotes: 25

danh32
danh32

Reputation: 6244

In your config file, set up your jars as library jars instead of input jars. This leaves them untouched.

-libjars <path/to/jars>

Upvotes: 5

Related Questions