You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找依赖libmupdf.so原生库的组件并优化Android APK体积

定位libmupdf依赖来源

你可以直接排查列出的jar包快速定位来源:

  • jar本质是zip压缩格式,你可以直接在jar存放目录搜索关键词libmupdf,或是逐个解压jar查看是否存在lib/目录下的libmupdf.so/libmupdf_java.so文件,10分钟内就能找到具体引入so的依赖。
  • 如果存在远程依赖,可执行./gradlew app:dependencies命令输出全依赖树,查找mupdf相关的依赖节点即可。

现有方案优劣对比

方案1:exclude排除so文件

构建成功不代表无运行风险:
只有当你的全业务逻辑完全没有调用mupdf提供的PDF渲染相关能力时,排除so才不会引发问题。如果存在隐藏的业务场景用到了PDF相关功能,运行到对应场景时会直接抛出UnsatisfiedLinkError崩溃。如果排查后确认业务完全不需要使用PDF能力,排除so后做好全业务场景覆盖测试,确认没有异常即可使用。

方案2:仅保留arm64-v8a架构

当前国内安卓活跃设备中98%以上都支持arm64-v8a架构,如果你的应用最低适配Android 5.0及以上版本,且可以接受放弃极少量老旧armeabi/armeabi-v7a设备,该方案的稳定性最高,不会出现so缺失类崩溃,还能大幅缩减APK体积。如果你的应用需要覆盖全架构用户,该方案不适用。

推荐解决方案

  1. 先定位到引入mupdf的jar包:
    • 如果确认该jar的功能你不需要用到PDF相关能力,直接排除对应so即可,排除后做好全业务场景测试,确认没有崩溃就可以上线。
    • 如果该jar是必须依赖的组件且确实需要用到PDF能力,可以自行编译裁剪版的mupdf so,只保留你需要的功能,裁剪后的mupdf单架构so体积通常可以降到3MB以内,远小于当前的20MB。
  2. 如果你不需要兼容Android 4.x设备,也可以选择App Bundle格式发布,国内主流应用市场和Google Play都已支持该格式,应用市场会根据用户设备架构自动分发对应架构的so,用户下载的安装包体积会大幅降低,不需要你手动裁剪架构。

内容的提问来源于stack exchange,提问作者MohamedHarmoush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:06:07