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

您自己从源代码构建库并基于平台生成多个.sos 是绝对必要的(源代码包含有关如何实现这一点的强烈提示,因此我不会详细说明)。

然后尝试添加

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 11 JNI 禁用 fdsan

如何在 Android 中使用 mupdf 库

Android PDF Viewer Library 或 muPDF 库教程

Android MuPDF ndk build Error: No such file or directory

为 Android 构建 MUPDF

Android JNI详解