Android产品研发(四)-->减小Apk大小

原创 2016年06月02日 18:05:32

转载请标明出处:一片枫叶的专栏

随着移动技术的深入发展,各种炫酷效果的更新,在我们追求UI与UE的同时一个不如忽视的问题逐渐暴露出来,那就是apk文件越来越大,可能有的童鞋会说现在都是wifi环境,apk文件增大几M不是什么大不了的问题,这其实也是有一定道理的,但是作为开发人员的我们这绝不是我们认为可以忽略这个问题的理由。优化Apk大小也是优化我们App体验的一个重要方面,虽然可能它不是那么的重要。

那么到底是那些原因让我们的Apk文件变得越来越大呢?

  • 多屏幕适配问题,移动设备的多样化导致了一个app需要N种不同尺寸的设置,从而增加了安装文件中资源文件的种类与大小;

  • 各种开发框架,开发工具的改进,虽然方便了我们开发者重复造轮子,但是这也间接的增加了安装文件的大小;

  • 在追求各种动画、UI效果的内在需求,显而易见的更加炫酷的UI、UE效果会客观上增减Apk文件的大小;

  • 开发人员沟通不足,冗余代码过多造成打出来的apk文件增大;

  • 为了满足性能、安全性的需求,增添.so库;

好吧,既然我们知道了为何我们的apk文件越来越大,我们就可以有针对性的提出解决办法,为了更好的说明问题,这里我简单的列一下apk文件的组成:

  • 源码文件即源代码文件等

  • 资源文件包括apk文件中的各种布局文件,资源文件,图片文件,原生文件等等

  • 本地代码文件这里主要指的是.so文件

那么在知道了apk文件的组成之后,如何减少apk文件的大小就很简单了

减小apk文件的大小,已经是一件很重要的事情。上面我们知道了apk文件的组成部分,就可以根据这些组成部分做一些优化安装文件的工作了。。下面是我总结的一些减小apk文件大小的方式:

源码文件方面的优化方式:

  • 掌握良好的编码习惯,复用代码,对于一些重复性的代码逻辑复用;

  • 使用Proguard对代码混淆,优化,压缩(它不仅仅是一个牛擦的混淆工具在代码优化方面也是很棒滴)。

    • 减少一些无用代码库的引用,经常的一个场景就是可能一些代码库已经不需要了,但是还是在代码中引用着,这样做的后果就是无用的代码库也会被编译到apk文件中;

    • 定期进行代码review,这是一个很重要的工作,可以是团队成员之间熟悉彼此代码同时也可以查找出一些自己看不出来的bug以及减小一些无用代码;

    • 做一些代码lint之类的工作,Android studio已经提供了这样的功能,定期执行代码lint操作是一个比较不错的习惯;

资源文件方面的优化方式:

  • 对于一些不必要的设备尺寸,不必要全部设备(主要看产品需求)

  • 对资源文件,主要是图片资源进行压缩;

  • 一些UI效果可以使用代码渲染替代图片资源;

  • 资源文件的复用,比如两个页面的背景图片相同底色不同,就可以复用背景图片,设置不同的底色;

本地代码文件方面的优化方式:

  • 限制app支持的cpu架构的数目,在当前的Android 生态系统中,让你的app支持 armabi 和 x86 架构就够了;

  • 尽可能的重用so库文件;

最后重点讲一下图片的压缩工作,其实上面所讲的所有的减小apk大小的技巧中最重要的就是对图片的压缩工作。一般而言图片压缩对减小Apk大小所产生的效果占到你所有减小Apk努力的效果50%以上,因而要想减小Apk大小就考虑一下怎么减小图片的大小吧。

这里推荐一个比较不错的图片压缩网站:https://tinypng.com/ 支持对jpg与png图片资源的压缩。

我们可以具体的测试一下不同大小图片资源的压缩情况:
这里写图片描述

可以看到当图片资源大于100k之后压缩率都是65%左右,在10k+的图片资源上表现同样很牛擦,当图片资源小于10k的随着图片大小的减小,逐渐减少。

后来具体在我们的apk文件中都是用这种方式压缩一遍之后,apk文件的大小从11.86M减少到了10.52M,可见apk文件减小的效果还是很明显的。

PS:
最新的Android Studio2.2提供了一个Apk分析器,能够查看Apk文件的组成部分一起各自大小所占的比重,相当不错哈。有兴趣的同学可以研究一下,多如何减小Apk大小还是很有帮助的。

打开Android Studio –> Build –> Analyze Apk
这里写图片描述

总结

以上减少apk文件的方式相对来说,体验方面就需要有一定的取舍,设计就是在一个约束集里面找出最好的方案。显然apk文件的大小就是一个约束。不要害怕为了让多个方面变得更好而放松一个方面的约束。你需要将app各方面进行整体考虑,而不是仅仅几个方面的斟酌。

另外对产品研发技术,技巧,实践方面感兴趣的同学可以参考我的:
Android产品研发–>总结(持续更新)
Android产品研发(一)–>实用开发规范
Android产品研发(二)–>启动页优化
Android产品研发(三)–>基类Activity


本文以同步至github中:https://github.com/yipianfengye/AndroidProject,欢迎star和follow


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android开发——减小APK大小

0.前言APK的大小对APP的加载速度,使用内存大小和消耗功率多少有一定影响。如何减小APK的大小对于Android开发者是一个永恒的话题。那么首先就来了解一下APK的组成结构。 1.APK的组成结构...

android apk 减小apk的大小

因为推广的需要,公司需要把APK的大小再“减小”一下,4M以内! 当达到4M以内之后,公司建议说,能否再压压?2M如何? 瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了,...

【腾讯Bugly干货分享】Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译,点击“阅读原文”可以查看英文原文。 译者简介:damonxia(夏正冬),天天P图Android工程师 用户经常会避免下...

如何将apk大小减少6M的

如何做到将apk大小减少6M

Android apk大小优化之自我实践

前言:第一篇博客,纯属笔记,以便日后使用。如有不足,请谅解! 一、概述 最近刚做完光大银行的一款APP,其主要依托互联网思维及技术,为住宅物业公司提供服务的互联网平台。通过整合社会资源,建立物业服务、...

Android性能优化系列之apk瘦身

Android性能优化系列之布局优化Android性能优化系列之内存优化为什么APK要瘦身。APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越...

android开发笔记之APK大小优化

蛋痛引发的争论晚上,实在是无聊的蛋痛,就用自己的APK查看了一下手机中所有应用软件的信息,忽然看到一个APK,/system/priv-app/ApeTaleEditor/ApeTaleEditor....

Android Studio如何减小APK体积

Android Studio如何减小APK体积

Android最佳实践 —— 详细谈谈如何减小APK体积

这是我们项目组安卓主力总结的如何减小APK体积的文章,很详细,有很多大家平时不注意的技巧,分享下转载请注明出处: http://www.cnblogs.com/soaringEveryday/p/52...
  • offbye
  • offbye
  • 2016年03月09日 13:30
  • 7656

Android APK size压缩(瘦身)

随着业务需求的扩展,apk size会不断增加,size太大会影响用户下载和升级的意愿,压缩size是每个大型app必须的工作。 首先来看一下apk的构成 主要包含资源和代码,那压缩size就...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android产品研发(四)-->减小Apk大小
举报原因:
原因补充:

(最多只允许输入30个字)