Библиотека MuPdf Android JNI очень большая

Как описано здесь (https://github.com/sufficientlysecure/document-viewer/issues/88) мы столкнулись с проблемой, что библиотека JNI, которая является частью демонстрации Android MuPdf, действительно велика. В данном случае это влияет на размер приложения для просмотра документов (https://f-droid.org/repository/browse/?fdid=org.sufficientlysecure.viewer). Файлы *.so в APK имеют размер более 12 МБ!

До того, как несколько месяцев назад мы обновили MuPdf до последней версии (т. е. до версии 2.5 и более ранних версий Document Viewer), каждый файл *.so занимал всего 3,9 МБ.

Можете ли вы объяснить это увеличение буквально на 300%? Есть ли что-нибудь, что мы можем изменить, чтобы еще больше сжать наши библиотеки JNI?


person thomas    schedule 29.04.2015    source источник


Ответы (1)


1) Разделение .apk

Поддержка NDK в AndroidStudio и выбор между Android Studio и Eclipse

2) Минимизация MuPDF

Крайне важно, чтобы вы сами собрали библиотеку из исходников и сгенерировали несколько .so на основе платформы (в исходниках содержатся подсказки о том, как этого добиться, поэтому я не буду вдаваться в подробности).

Затем попробуйте добавить

LOCAL_CFLAGS += -DNOCJK

в Core.mk, чтобы исключить шрифты из .so (правильно, 9 МБ шрифтов из resources\fonts\droid теперь будут удалены из библиотеки).

Только что увеличился с 9266 КБ до 2155 КБ распакованный.

РЕДАКТИРОВАНИЕ: Опять же, это зависит от вашего целевого рынка. Возможно, вам придется оставить их. CJK = китайский, японский, корейский

person Eugen Pechanec    schedule 30.04.2015
comment
Вау, я бы никогда не подумал, что файл *.so содержит ресурсы (шрифты и т.д.). Спасибо за этот намек! У нас есть, по крайней мере, китайские и корейские пользователи, но я думаю, что можно удалить шрифты CJK из пакета, поскольку в Document Viewer есть настройка для пользовательских шрифтов (которые затем вводятся в mupdf). Я попробую ваше предложение позже сегодня и отмечу ваш ответ как решение, если все работает так, как ожидалось. - person thomas; 30.04.2015
comment
(Просто вспомнил, что они не являются ресурсами, как в файлах. Если вы удалите шрифты из дерева файлов, в коде будет жестко закодированная резервная копия массива байтов.) - person Eugen Pechanec; 30.04.2015