记一次APK瘦身全过程

主要从下面三个方面压缩,还有很多小细节可以优化,可以去官方查找资料

  • java代码混淆
  • 静态资源引用
  • APK包拆开分析

java代码

配置混淆

网上随意找一个通用的Proguard文件,很多按此不表

  • 初始安装包:25,165,735
  • 配置proguard:24,820,806
  • 缩小336K

资源文件

lint清理未使用的资源文件,年老的项目能清理不少的文件

  1. 选择你的项目
  2. 点击AS上的Analyze菜单按钮
  3. 选择Run Inspection by Name
  4. 会出现一个弹窗
  5. 输入unused resources
  6. 下面的输出栏会输出没有用的资源文件。
  7. 点进去看看,然后删除无用的。
  8. 再次打包,你会发现你的apk小了很多。

lint分析一下代码,静态代码分析工具

能查找看到不少问题,

图片替换(暂不处理)

图片过一遍,简单的单色图片可以用xml配置出来,可以节约一些

AndResGuard

AndResGuard是一个缩小APK大小的工具,它的原理类似Java Proguard,但是只针对资源。AndResGuard 提供如下功能:

  • 图片文件压缩功能。
  • 原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a。

与此同时,在资源文件多且名字很长的情况下,签名时候MANIFEST.MF和CERT.SF文件也会很大,使用AndResGuard混淆后缩小几百K不是问题。

 


APK包分析 Android Studio-->Build-->analyze Apk-->选择文件

随便给张示例图

分析发现有这么几个大头:

  • assets很大
  • so库很大
  • 一个小项目有多个.dex文件

检查.dex,

重复或者未使用的三方,一般来说,打开比较大的三方包就行

模块包名大小
图片缓存工具ImageLoadercom.nostra13.universalimageloader92K
图片缓存工具glidercom.bumpetech.glide250K
Gson工具networkcom.networkbench.com.google117k
Gson工具googlecom.google.gson227K
环信huphenatecom.huphenate.chat224K
网络框架okgocom.lzy.okgo60k
网络框架retrofitcom.retrofit250k

Assets中的H5

  • 前端将不少源码映射也放进来了,去掉所有的js.map和css.map之后打包
  • 16,531,394 少了8M
  • Assets包从9.9M多直接到了2.3M

so文件过大

这里小科普一下,NDK 开发时会涉及到 CPU 架构的适配,不同的机器上可能会有不同的 CPU 架构,也就是说,翻译到机器上使用的规则不一样,Android 上有7种 CPU 架构。

  1. armeabi
  2. armeabi-v7a
  3. arm64-v8a
  4. x86
  5. x86_64
  6. MIPS
  7. MIPS64

从厂家上来分是有三种,arm,x86,MIPS,arm 系列是绝大多数手机上使用的,x86 主要是运用在平板上,而 MIPS 基本上就没见过。

正常来说只使用 armeabi-v7a 就可以适配基本所有手机了,因为现在手机基本上都支持这种CPU架构,但是对于同时也能支持 arm64-v8a 的手机来说,性能上就不如使用对应 CPU 架构的快了,毕竟是32位和64位的区别

科大讯飞

libmsc.so 每种平台大概1M

极光推送

libjpush217.so

  • 每种平台大概100K
  • 新版的所有so文件加在一起仅在80k左右可以考虑使用新版的sdk

环信

环信包含两个so文件

由于时间和机型有限,只做分析并没有做具体的优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值