приложение, которое я написал, использует несколько сторонних банках. Иногда используется только небольшая часть всего барабана размером от 50 кБ до 1,7 мБ - один или два вызова функций или классы.Минимизация размеров зависимостей банок
Каков наилучший способ уменьшить размеры банки. Должен ли я загружать источники и строить банку только с теми классами, которые мне нужны? Какие существующие инструменты могут помочь автоматизировать это (например, я кратко рассмотрел http://code.google.com/p/jarjar/)?
Спасибо
Edit 1: Я хотел бы, чтобы снизить размер моей третьей стороны баночки 'официальной' как swingx-1.6.jar (1,4 Мб), набор-3,6 (1,7 MB) glazedlists -1.8.jar (820kB) и т.д., так что они содержат только голые минимальные классы мне нужно
Edit 2: Минимизация баночку вручную или с помощью программы, как ProGuard дополнительно усложняется, если библиотека использует отражение. Injection with google guice does not work anymore after obfuscation with proguard
Ответ на Клетуса на другой пост очень хороший How to determine which classes are used by a Java program?
Я использовал Proguard для обфускации моего приложения с хорошим результатом и заметил меньший размер вывода. Я также столкнулся с проблемами с «сломанными классами», как вы упоминаете, с объектами xstream, пока я не добавил их в раздел «сохранить». Я не использовал proguard, чтобы уменьшить размер моих банок зависимости, хотя - возможно ли это? –
@brian_d - да, это должно быть возможно, используя -injars/-outjars. Я думаю, что «уровень сложности» будет связан с количеством банок, которые у вас есть. В качестве примера я использовал шифрование bouncycastle. Я смог просто включить классы, которые мне нужны, отбросить весь код для неиспользуемых алгоритмов и т. Д. –
спасибо за предложение, я попробую. –