美文网首页
Android APK size压缩(瘦身)

Android APK size压缩(瘦身)

作者: Thread_921 | 来源:发表于2019-04-10 16:39 被阅读0次

    随着业务需求的扩展,apk size会不断增加,size太大会影响用户下载和升级的意愿,压缩size是每个大型app必须的工作。

    首先来看一下apk的构成:


    image.png

    主要包含资源和代码,那压缩size就要从这2方面入手。

    资源方面

    1. 删除无用资源

    通过lintresource shinking等删除无用资源

    2. 压缩图片

    1)无透明度的png转成jpg

    2)通过tingpng, tingjpg等进行有损压缩,或通过ImageOptim进行无损压缩

    3)在不影响质量的提前下将大图转换成webp

    3. 压缩动画

    压缩 loading 等gif动画,及其它较大的资源,如mp3

    4. 动态加载

    对动态表情等特定业务场景才使用的动画等资源做动态加载,app启动后在线下载,不随apk发包。

    5. 使用微信资源压缩方案

    方案见 https://github.com/shwenzhang/AndResGuard

    代码方面

    1. 开启proguard

    proguard不仅能够混淆,而且能够优化代码,可以大大减小dex文件的大小。

    但需要对被反射引用的类需要做好keep

    2. 动态加载

    对ocr(身份证识别)等较大的库做动态加载,app启动后在线下载,不随apk发包。

    3. 插件化

    将相对独立的业务做成插件,app启动后在线下载,不随apk发包。

    4. 删除非必要的so库

    很多app为了支持x86,apk至少包含armx86 2个ABI,甚至包括arm其实x86构架的手机也支持arm,可以删除x86 so,只保留arm
    有人认为x86手机以兼容模式运行arm so会影响效率,其实效率上的影响对用户并没有直接的感知。
    删除x86 so可以大大减少apk size,特别是app集成了很多第三方so库的情况下,如frescorn等。
    关于so的介绍详见Android 动态链接库加载原理及 HotFix 方案介绍

    1. Facebook字节码优化方案redex

    方案见 https://github.com/facebook/redex

    其它方面

    Android标准打包过程未对so库,arsc等文件进行压缩,打包时可以对这些资源进行压缩,可以压缩好几M的大小。

    实践以上方案可大大减小apk size,实测45M降到30M以下~~~


    如有误点,多多指教 喜欢呦~

    相关文章

      网友评论

          本文标题:Android APK size压缩(瘦身)

          本文链接:https://www.haomeiwen.com/subject/idloiqtx.html