Как я могу исключить внешний .jar из obfuscation Proguard (проект Android)?

Когда я экспортирую проект android с proguard.cfg, все указанные файлы .jar также запутываются. Как я могу исключить некоторые из .jars из обфускации?

Ответ 1

Если вы не хотите редактировать Ant script, вы можете добавить -keep параметры proguard.cfg для классов в этих внешних банках. Например:

-keep class othercode.** { *; }

Или с регулярным выражением, содержащим отрицатель:

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

Стандартное Ant script все равно будет объединять все упомянутые баночки в единственном выходном банке.

Ответ 2

В вашем файле конфигурации настройте свои банки как библиотечные банки вместо входных банок. Это оставляет их нетронутыми.

-libjars <path/to/jars>

Ответ 3

Использование плагина proguard maven. Я делаю это так.

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

<library>true</library> 

приводит к тому, что внешняя банка сливается в финальную банку после обфускации. Но это может привести к тому, что манифест будет перезаписан. Я еще не понял, как избежать этого наилучшим образом.