美文网首页
Android包体积优化指南

Android包体积优化指南

作者: 愈强 | 来源:发表于2020-09-16 00:07 被阅读0次

    Android 安装包主要由 libs(就是so文件)、assets、res以及code组成。大部分应用中,这些内容都占了安装包99%的体积。

    下面我们逐步分析每一种类型文件的瘦身方案。

    libs

    libs也就是so文件。大部分流行应用都会包含libs,而且会占用很大的体积。比如国民App微信中的libs就占了50%以上的体积。

    libs下会包含多种cpu架构的so文件系列,可以根据市场中手机设备的分布对so进行过滤。比如只内置arm-v7或arm-v8的版本。这可以通过在编译脚本中添加abiFilters来实现。

    谷歌市场能够做到按需下载app内容,也就是无论app中内置了多少cpu架构的so文件,在下载时都是只下载匹配当前设备的那一部分内容,其他都不会下载。不知道国内的应用市场是否也支持这个功能。

    第二个方案就是将so文件远程化。但是远程化so可能会造成大量的崩溃,所以【不建议】这样做。

    assets

    assets是应用中会用到的一些资源文件。和res的区别在于,res会在编译期间被压缩优化,但是assets的内容不会被修改。

    assets中的文件可以完全远程化并在需要的时候进行下载,因为我们可以完全控制assets文件的访问代码(当然前提是这些代码和资源都是我们自己的)。

    问题在于,当本地没有资源而且又没有网络的时候,需要有降级方案解决资源缺失的问题。

    res

    资源,也就是代码中定义的各种layout、图片、颜色、字符串等等。

    对于资源文件,可以通过工具快速查找无用资源并删除,具体方法可以参考这里

    另外也可以通过一些优化方案减少图片等资源的体积,比如

    • 使用shape或矢量图定义规则的图片。
    • 使用tint修改图片颜色,避免定义多个仅颜色不同的图片。

    code

    针对代码的优化没有什么好的方法,只能是平时的开发中注意优化,而且优化效果很差,因为代码可以被压缩,在最终包里面体积是很小的。而且应用里面大部分代码都是接入的三方sdk的内容。

    不过在开发中可以做到以下几点,至少可以将包体积增长的速度降下来:

    1. 随手删除无用的方法、类等(基础工具方法除外)
    2. 删除代码时,同时删除其依赖的资源文件,包括res和assets等。

    相关文章

      网友评论

          本文标题:Android包体积优化指南

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