android assets大小限制200m,Android包体积优化指南

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的内容。

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

随手删除无用的方法、类等(基础工具方法除外)

删除代码时,同时删除其依赖的资源文件,包括res和assets等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值