美文网首页
瘦身优化

瘦身优化

作者: flynnny | 来源:发表于2021-03-26 00:43 被阅读0次

    瘦身优化及Apk分析方案介绍

    一般最后才做

    瘦身优势

    主要是转化率:下载转化率
    头部App都有Lite版本
    渠道合作商要求

    APK组成

    代码相关:classes.dex
    资源相关:res、asserts、resources.arsc
    So相关:lib(这部分优化空间大)

    APK分析

    1ApkTool反编译工具

    apktool d xx.apk
    

    2Analyze ApK :Android Studio 2.2之后
    .查看Apk组成、大小、占比
    .查看Dex文件组成
    .Apk对比

    直接把apk放入即可

    1.png

    3网站

    2.png

    分析时间长、傻瓜式

    4

    3.png 4.png

    代码瘦身实战

    代码混淆

    花指令、功能等价但改变形式
    1代码中各个元素改成无意义的名字
    2以更难理解的形式重写部分逻辑
    3打乱代码格式

    Proguard:Java类文件处理工具,优化字节码

    .代码中元素名称改短,移除冗余代码
    .增加代码被反编译的难度
    使用:
    .配置minifyEnabled为true,debug下不要配置(慢、没用)
    .proguard-rules中配置相应规则即可

    5.png

    proguard-rules:

    6.png

    三方库处理

    基础库统一
    选择更小的库,Android Methods Count(此插件能显示方法数)
    仅仅引入所需的部分代码:如Fresco的webp支持
    修改源码,提取所需功能

    如只要 Fresco的webp支持

    7.png

    移除无用代码

    业务代码只加不减
    代码太多不敢删除

    可通过AOP统计Activity使用情况

    8.png 9.png

    资源瘦身实战

    冗余资源

    右键--Refactor--Remove Unused Resource--preview--找到冗余资源

    图片压缩

    1千行代码--5kb
    TinyPngPlugin 图片压缩插件
    图片格式选择(webp、png严格保留色彩,jpg忽略一些中间色)

    资源混淆

    andResGuard
    资源路径混淆成单个字母路径

    10.png

    选择andResGuardRelase

    11.png

    缩减大概800k

    图片只保留一份(比如只存xh)
    资源在线化

    So瘦身实战

    so移除

    So是Android上的动态链接库
    加解密算法、音视频、
    七种不通类型的CPU架构--对应的CPU效率高但体积变大

    abiFilters:设置支持的So架构
    一般选择armabi(都支持此架构)

    12.png

    更优方案

    完美支持所有机型代价太大

    都放在armabi目录,根据CPU类型加载对应架构So

    armabi-v7 和armabi都有,代码判断CPu只加载所需的(微信就是这么做的)

    伪代码模拟一下

    13.png

    其他方案

    So动态下载
    插件化(感兴趣可以看阿里的atls 和360的replg)

    瘦身优化模拟面试

    怎么降低Apk包大小

    结合干货周期
    初期加了很多功能、UI图未压缩
    稳定期-用户下载意愿

    用Analyze ApK 查看Apk组成 体积分析
    查看代码、资源、so方面优化
    代码:Proguard 混淆、统一三方库(功能相同的库)、无用代码删除--效果不明显
    资源:无用资源删除,图片压缩,资源混淆(名称变短)
    So:只保留Armeabi、更优方案(代码中做判断)

    Apk瘦身问题长效治理

    结合CI发版之前与上个版本包体积对比,超过阈值则必须优化

    推进插件化改造

    相关文章

      网友评论

          本文标题:瘦身优化

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