android-APK瘦身

参考:

Android性能优化之APK瘦身最全总结

Android性能优化之APK瘦身详解(瘦身73%)

apk组成

APK文件由一个ZIP存档组成,其中包含组成应用程序的所有文件。这些文件包括Java类文件,资源文件和包含编译资源的文件。

APK包含以下目录:

META-INF/:
包含CERT.SF和 CERT.RSA签名文件以及MANIFEST.MF 清单文件。

assets/:
包含应用可以使用AssetManager对象检索的应用资源。

res/:
包含未编译到的资源 resources.arsc。

lib/:
包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。

resources.arsc:
包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。
打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。
此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。

classes.dex:
包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。

AndroidManifest.xml:
包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。

打开抖音的apk查看:
在这里插入图片描述

一般来讲APK结构中比较大的部分一般是classes.dex、lib、res、assets这些文件或者目录。

瘦身方法:

  1. 使用统一的一套资源:对于大对数APP来言,只需要一套设计图就足够了。鉴于现在分辨率的趋势,建议取720p的资源,放在xhdpi目录。

  2. 开启代码混淆:在build.gradle中使用minifyEnabled true 进行Proguard混淆配置。

  3. 开启去除无用资源:在build.gradle中使用shrinkResources去除无用资源。

  4. 删除无用语言资源:国内的APP只需要使用中文就够了

  5. 使用webp格式:webp支持透明度,压缩比比jpg更高但显示效果却不输于jpg,官方评测quality参数等于75均衡最佳。

  6. 覆盖第三方库的大图:有的第三方库使用的图片资源,你可能使用不到,因此可以用小图进行覆盖

  7. 删除armable-v7包下的so:armable的so是兼容armable-v7的

  8. 使用微信资源压缩打包工具:微信资源压缩打包工具通过短资源名称,采用7zip对APP进行极致压缩实现减小APP的大小。

  9. 矢量图:矢量图是由点与线组成,而且使用矢量图也能够更好进行适配,同时比位图节约百分之三十至四十的空间,矢量图也契合谷歌推崇的扁平化方式。

  10. 使用shape背景:很多纯色的渐变的圆角的图片都可以用shape实现,节省了背景图片资源。

  11. 使用着色方案:相信工程里面一般会有很多selector文件,也有很多相似的图片,通过着色方案我们能减轻工作量,减少类似的这样的文件。

  12. 避免重复库:避免重复库是一定要排查的,但是有的库总是藏的很深,所以当你引用的第三方库的时候,要仔细的排,最好能够阅读源码,这样既能提高自己,也可以避免引入重复的库

  13. 清理第三方库和冗余代码:版本迭代过程中,经常有冗余代码和第三方库留下,这样会或多或少的增加APK的大小,这种情况没有捷径,只有每个文件一一查找。

  14. 支持插件化:插件化支持动态的加载代码和加载资源,目的是把APP的一部分分离出来了,对于业务庞大的项目来说非常有用,极大的减小了APK的大小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值