美文网首页Android Other
Android 性能优化09 ---APK优化02(瘦身优化)

Android 性能优化09 ---APK优化02(瘦身优化)

作者: 沪漂意哥哥 | 来源:发表于2022-04-09 10:58 被阅读0次

一. APK结构分析

1.assets:
包含了应用的资源,这些资源能够通过AssetMaanger对象获得
2.lib:
办好了针对处理器层面的被编译的代码。这个目录针对每一个平台类型都有一个子目录,比如armeabi,armeabi-v7a,arm64-v8a,x86,x86_64和mips.
3.res:
包含了没被编译到reasource.arsc的资源
4.META_INF
包含CERT.SF和CERT.RSA签名文件,也包含了MANIFEST.MF文件
5.class.dex
包含了能被Dalvik/Art虚拟机理解的dex文件格式的类。
6.resources.arsc
资源映射表
7.AndroidManifest.xml

注意:占用空间的主要是代码,图片,资源和lib和asset文件,主要方向精简代码,压缩图片,去除无用的库,减少asset里面文件。

二.瘦身维度01---资源选择

对于绝大数app来说,只需要去一套设计图就足够了。鉴于现在分辨率的趋势,建议去720p的资源,放到xhdpi目录。对于多套资源,只使用720p的一套资源,在视觉上相差不大,很多的公司的产品也是如此。但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量。注意,这里不是说把不是xhdpi的目录都删除,而是强调保留一套设计资源就够了。

三.瘦身维度02---图片优化

1.各个图片格式之间的差异

a.jpg/jpeg

jpg格式中不能有透明区域(没有A通道),在保存时会自动保存为白色。
jpeg非常适合用来存储照片,用来表达更生动的图像效果,比如颜色渐变。

b.PNG

有更好的透明度支持,比jpeg图片大小大。

c.webp

相同质量的图片,webp具有更小的文件体积。在放大时,不会失真,所以非常适合用来绘制企业Logo,Icon等。

d.svg

使用XML来描述图片。SVG加载速度快于PNG,但是渲染熟读会慢于PNG,毕竟PNG有硬件加速,但平均下来,加载速度的提升弥补了绘制的速度缺陷。

四.瘦身维度03---无用资源剔除

AS给我们提供了一键移除所有无用的资源,但是这种方式不建议使用,因为如果某资源仅存在动态获取资源id的方式,那么这个资源会被认为没有使用过,从而会直接被删除。
shrinkResources true:去除无用资源
在打包的时候会自动清除掉无用的资源,但是经过实验发现打出的包并不会,而是会把部分无用资源用更小的东西替换掉。

五.瘦身维度04---(备用资源)国际化资源配置优化

android {
  defaultConfig {
    //只适配英语
    resConfigs 'en'
  }
}

六.瘦身维度05---动态库打包优化

1.只配置armeabi-v7a
android {
  defaultConfig {
    ndk {
      abiFilters "armeabi-v7a"
    }
  }
}
2.通过productFlavors配置动态包
flavorDimensions "default" 
  productFlavors {
    arm32{
     dimension "default"
      ndk {
        abiFilters "armeabi-v7a"
      } 
    }
    arm64{
     dimension "default"
      ndk {
        abiFilters "armeabi-v8a"
      } 
    }
  } 
}
3.通过splits分包
splits{ 
        abi{ 
             enable true 
             reset()
            include "armeabi-v7a", "arm64-v8a" 
            universalApk true
        }
    }

此时打包会输出三个包 image.png
4.远程so思路

a.网络挂载so库。
b.本地热加载。


image.png

七.瘦身维度06---代码压缩/代码混淆

将 minifyEnable设置为true即可。

八.Matrix-ApkChecker方案

ApkChecker 作为Matrix系统的一部分,是针对android安装包的分析检测工具,根据一系列设定好的规则检测apk是否存在特定的问题,并输出较为详细的检测结果报告.

1.执行命令:
java  -jar /Users/zhouhao287/Desktop/apm/matrix-apk-canary-0.5.1.jar  --config /Users/zhouhao287/Desktop/apm/apk_config.json
2.结果分析:
image.png
3.文件解析:
结果中可以看到示例apk的相关全局信息如下图所示, so 库的大小和AS自带分析是一样的! image.png

里面包括一些异常大小的资源文件,比如我们项目中的GIF图片很多都是500k左右,然后我自己在网上找了下免费压缩的效果看上去很不错,大小为12K,对你没看错,压缩后大小12K 明白什么了吗!!!

九.结论

1.APK瘦身没有什么奇葩的骚操作,主要时根据实际业务情况,从设计角度触发,结合设计,工具,方案等多维度尽可能的去除或者减小资源体积
2.大多数情况下可以从外部入手,设计阶段直接定下方案,联合设计等一起评审原型。
3.瘦身也和之前的UI优化上也有一定的联系。

相关文章

网友评论

    本文标题:Android 性能优化09 ---APK优化02(瘦身优化)

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