Android Java开发:如何在不删除依赖的前提下缩小PDF阅读器APK体积
无依赖删减前提下的PDF阅读器APK压缩方案
完全可以在不删除任何现有依赖的前提下大幅缩减APK体积,针对你的项目场景,以下优化方案落地后体积普遍可以降到8~10MB区间:
1. 开启基础构建优化配置
直接修改模块级build.gradle的release构建规则,不需要改动业务代码:
- 开启R8代码混淆:设置
minifyEnabled true,会自动删除所有未被调用的冗余代码(包括依赖库中你没用到的功能代码),你的业务逻辑非常简单,这一步可以砍掉3~4MB体积 - 开启资源压缩:同步设置
shrinkResources true,自动删除项目和依赖库中未被引用的布局、图片、字符串等资源 - 裁剪多余语言资源:通过
resConfigs仅保留你需要支持的语言,避免依赖库自带的几十种未使用翻译资源占用空间
配置示例:
android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 按需保留你需要适配的语言,例如仅保留中文和英文 resConfigs "zh-rCN", "en" } } }
2. 针对PDF依赖的专项优化(收益最高)
你使用的com.github.barteksc:android-pdf-viewer:3.2.0-beta.1依赖自带了适配4种CPU架构的native so库,这部分是你APK体积占比最高的部分(22MB中至少15MB为so库),仅需要保留主流移动设备的架构即可:
android { defaultConfig { ndk { // 仅保留armeabi-v7a(兼容旧设备)和arm64-v8a(兼容新设备)两个架构 abiFilters "armeabi-v7a", "arm64-v8a" } } }
这一步操作完成后,APK体积会直接下降一半以上,是对你的项目收益最高的优化点,且完全不影响功能兼容性。
3. 辅助优化操作
- 矢量图运行时渲染:在
defaultConfig中添加vectorDrawables.generatedDensities = [],不需要为你的9个矢量图标生成多dpi的png文件,完全运行时渲染矢量资源,可减少数百KB体积 - 二次压缩webp资源:使用安卓Studio自带的webp压缩工具对现有图片进行无损压缩,在不损失画质的前提下还能再压缩20%~30%的图片体积
- 若上架Google Play可切换AAB格式发布:使用Android App Bundle格式上传,应用市场会根据不同用户的设备架构、语言下发对应的资源包,用户侧的下载体积会比通用APK再小30%以上
内容的提问来源于stack exchange,提问作者Syed Irfan Hussaini
相关产品推荐
相关产品推荐

