2012-06-12 3 views
2

С тех пор я использую проект библиотеки, содержащий много многоразового кода. Таким образом, если есть ошибка, я должен исправить ее только на одном месте. Этот проект также содержит множество ресурсов. На самом деле это не проблема, потому что в большинстве проектов я использую почти все из них.Как скомпилировать только используемые ресурсы

Теперь я работаю над очень маленьким проектом, и я также использую свой проект библиотеки. Но мне нужны только небольшие части, и я подумал, что java-компилятор достаточно умен, чтобы знать, какие классы и ресурсы мне нужны. Ну, это было до тех пор, пока я не увидел размер файла полного пакета ... После некоторой декомпиляции я обнаружил, что все ресурсы из моего проекта библиотеки, которые не используются, также скомпилированы в apk.

Итак, теперь мой вопрос: есть ли способ сообщить компилятору android, что он должен игнорировать ресурсы, которые не используются?

+0

Я также в том месте, где я хочу, чтобы цепочка инструментов автоматически удаляла неиспользуемые ресурсы из связанных проектов библиотеки Android. В этом случае не так просто сделать это вручную, и Lint тоже не поможет. Я не хочу калечить или создавать уменьшенные копии моих библиотек. Вот запрос функции на веб-сайте отслеживания проблем Android: http://code.google.com/p/android/issues/detail?id=25254 – tiguchi

ответ

0

Попробуйте использовать такой инструмент, как Proguard. Помимо прочего, он имеет возможность обнаруживать неиспользуемые классы, поля и т. Д., Что приводит к меньшему размеру пакета.

Отрывок из его набора функций:

ProGuard бесплатный класс Java файл Shrinker, оптимизатор, обфускатор и preverifier. Он обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты. Он оптимизирует байт-код и удаляет неиспользуемые инструкции. (...)

Редактировать: Существует также оптимизатор, специализирующийся на Android, называемый DeXGuard.

+0

Спасибо за отзыв о Proguard. Я пробовал это некоторое время назад, но я обнаружил, что он не удалял неиспользуемые изображения, а только ссылки на него в классе R. То, что я хотел бы достичь, это то, что и изображения будут удалены тогда, если это возможно ... – Arne517

+0

Для удаления неиспользуемых ресурсов попробуйте использовать [Android Lint] (http://tools.android.com/tips/ lint). – Neo

+1

Lint предупреждает только о неиспользуемом ресурсе. Он не удаляет их из apk. (Или я что-то пропустил?) И поскольку я работаю с проектом библиотеки, который я использую в нескольких приложениях, я не могу просто удалить в нем ресурсы. – Arne517

Смежные вопросы