Когда я экспортирую проект android с proguard.cfg, все указанные файлы .jar также запутываются. Как я могу исключить некоторые из .jars из обфускации?
Как я могу исключить внешний .jar из obfuscation Proguard (проект Android)?
Ответ 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>
приводит к тому, что внешняя банка сливается в финальную банку после обфускации. Но это может привести к тому, что манифест будет перезаписан. Я еще не понял, как избежать этого наилучшим образом.