Только запутать и оптимизировать - PullRequest
0 голосов
/ 28 октября 2018

Я возился с конфигурацией Proguard и понял, что хочу протестировать, просто чтобы оптимизировать и запутать, не сжимаясь, чтобы немного уменьшить мой сосуд.Это моя конфигурация:

# Include java runtime classes
-libraryjars  <java.home>/lib/rt.jar


-dontshrink
-dontusemixedcaseclassnames
-dontpreverify
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-dontwarn
-keep class **
-keep interface **
-keep enum **

Но я по-прежнему получаю сообщения об ошибках типа:

java.lang.IllegalArgumentException: Не удается найти общий суперкласс [org / apache / logging/ log4j / core / jackson / Log4jXmlModule] (с 1 известным суперклассом) и [org / apache / logging / log4j / core / jackson / Log4jJsonModule] (с 4 известными суперклассами)

Что такоея делаю неправильно?

1 Ответ

0 голосов
/ 28 октября 2018

Библиотеки log4j опираются на некоторые зависимости времени выполнения, см. Страницу здесь:

https://logging.apache.org/log4j/2.x/runtime-dependencies.html

Рассматриваемые классы (Log4jXmlModule и Log4jJsonModule) происходят из некоторого класса Джексона, который является тольконеобязательная зависимость и, следовательно, вероятно, не включенная в ваш проект.

Если вы включите -dontshrink, ProGuard не сможет удалить эти классы, и во время оптимизации вы получите такую ​​ошибку, поскольку ProGuard не знает об иерархии.Как правило, не рекомендуется выполнять оптимизацию, но отключать сжатие, поскольку некоторые методы оптимизации основаны на том факте, что сжатие очищается впоследствии.

В вашем случае вы можете добавить отсутствующую зависимость времени выполнения в качестве -libraryjar ввода в ProGuard дляизбежать этой ошибки.

...