MuPdf Android JNI库非常大
Posted
技术标签:
【中文标题】MuPdf Android JNI库非常大【英文标题】:MuPdf Android JNI library is very large 【发布时间】:2015-07-09 10:09:51 【问题描述】:正如此处 (https://github.com/sufficientlysecure/document-viewer/issues/88) 所述,我们面临的问题是,作为 MuPdf android 演示一部分的 JNI 库非常大。在这种情况下,这会影响 Document Viewer 应用程序 (https://f-droid.org/repository/browse/?fdid=org.sufficientlysecure.viewer) 的大小。 APK 中的 *.so 文件大小超过 12 MB!
在几个月前我们将 MuPdf 更新到最新版本(即 Document Viewer 的 2.5 及更早版本)之前,每个 *.so 文件仅占 3.9 MB。
您能解释一下实际增加了 300% 吗?我们有什么可以改变的来进一步压缩我们的 JNI 库吗?
【问题讨论】:
【参考方案1】:1) 拆分.apk
NDK support in AndroidStudio and choosing between Android Studio and Eclipse
2) 最小化 MuPDF
您自己从源代码构建库并基于平台生成多个.so
s 是绝对必要的(源代码包含有关如何实现这一点的强烈提示,因此我不会详细说明)。
然后尝试添加
LOCAL_CFLAGS += -DNOCJK
在Core.mk
中从.so
中排除字体(没错,现在将从库中删除来自resources\fonts\droid
的9 MB 字体)。
刚刚从 9266 kB 变为 2155 kB 解压。
编辑:这又取决于您的目标市场是什么。您可能需要保留这些内容。CJK = Chinese, Japanese, Korean
【讨论】:
哇,我从没想过 *.so 文件包含资源(字体等)。谢谢你的提示!我们至少有中文和韩文用户,但我认为从包中去除 CJK 字体仍然可以,因为 Document Viewer 具有自定义字体设置(然后将其注入 mupdf)。如果一切正常,我将在今天晚些时候尝试您的建议,并将您的答案标记为解决方案。 (记住它们不是文件中的资源。如果从文件树中删除字体,代码中有一个硬编码的字节数组备份。)以上是关于MuPdf Android JNI库非常大的主要内容,如果未能解决你的问题,请参考以下文章
Android PDF Viewer Library 或 muPDF 库教程