最近太忙好久没有写随笔,放假才有空写写随笔。

最近在项目中一直在做包大小优化

随着业务需求的增加,包大小是忍不住的往上涨

为了提高应用市场下载转化率,一直在优化包大小

首先 分析你的apk中占比的主要成分,以及可以减少的部分

一般主要有下面几部分构成你包的大小

1. 资源(主要是图片资源,布局,assets等)

2. so大小

3. 三方库

4. 二方库

5. 业务功能

主要从上面的几部分来进行优化

1.通过压缩图片、重点出一套图片删除其他的图片、简单的图形通过shap代替png

2. 大的背景图片在很少用到页面上使用时,将没有alpha通道的png压缩成jpg,甚至webp格式

3. 通过include减少重复布局文件、资源混淆

4. 编译so的时候通过指定arm和thumb2指令格式减少so大小

5. 删除armeabi-v7a下面的so,甚至可以删除x86下面的so(x86 houdini支持兼容arm指令)

6. 同样的功能用小的三方库代替大的三方库

7. 删除三方库中多余的功能

8. 打包时候过滤三方库中不用的资源

9. 公司的二方库,一般要催促其他的团队优化SDK的大小

10. 删除dex中的垃圾指令、通过混淆来减少dex的大小

11. 用7zip压缩代替普通的zip压缩(注意压缩后会导致raw下面文件找不到,所以过滤文件格式为store的文件不进行压缩)

12. 通过网络下载,动态加载jar,dex, apk的方式来减少包大小(插件化)

如何查看zip包中的文件格式:

unzip -lv WhatsApp-Messenger_v2.12.550pakage.apk | grep .so

介绍一款分析包大小的网站:

https://nimbledroid.com

apk瘦身(包大小优化)的更多相关文章

  1. 39、apk瘦身(转载)

    本文转自::Android开发中文站 » 关于APK瘦身值得分享的一些经验 从APK的文件结构说起 APK在安装和更新之前都需要经过网络将其下载到手机,如果APK越大消耗的流量就会越多,特别是对于使用 ...

  2. Android性能优化系列之apk瘦身

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

  3. APK瘦身记,如何实现高达53%的压缩效果

    作者:非戈@阿里移动安全 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话题其实是一个老生常谈的题目,不论是公司内部,还是外部网络,前人前辈已经总结出很多方法和规律. ...

  4. APK瘦身实践

    首发地址:http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ 因为推广的需要,公司需要把APK的大小再 ...

  5. Android APK 瘦身 - JOOX Music项目实战

    导语 JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App.东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存 ...

  6. APK瘦身记,怎样实现高达53%的压缩效果

    作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...

  7. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  8. APK瘦身

    APK瘦身 主要从一下三方面来瘦身: 1. Java 源代码 1) ,这方面主要是通过最简洁的代码实现最直接的功能,还有就是提出上线前不必要的java代码,可以使用UCDector进行分析,从而对代码 ...

  9. Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

随机推荐

  1. anroid打包

    http://blog.csdn.net/qq435757399/article/details/46634363 转载 Gradle打包APP签名 默认情况下,debug被配置成使用一个debug ...

  2. Android设备唯一性判断

    前段时间项目需要一个功能,就是在操作完某一个逻辑之后返回给客户一个红包,安全校验团队需要我们提供android设备的唯一标示,起初直接通过获取设备的imei号传给了server端,后台公司云迹监控发现 ...

  3. CodeForces 313C Ilya and Matrix

    Ilya and Matrix Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Su ...

  4. 【转载】如何系统地自学 Python?

    原文:如何系统地自学 Python? 作者:彭猫 本文由 知乎 彭猫 授权发布,版权所有归作者,转载请联系作者! 是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太 ...

  5. D django 用户认证系统

    django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...

  6. Codeforces Round #259 (Div. 2)AB

    链接:http://codeforces.com/contest/454/problem/A A. Little Pony and Crystal Mine time limit per test 1 ...

  7. phpcms标签大全V9

    转自:http://blog.csdn.net/cloudday/article/details/7343448调用头部 尾部 {template "content"," ...

  8. DOM 操作XML(CRUD)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> ...

  9. asp.net MVC开发过程中,使用到的方法(内置方法及使用说明)

    ® 视图的返回使用案例: [HttpGet] [SupportFilter] public ActionResult UserTopic(string type, string TopPicId, s ...

  10. 关于<![CDATA[]]

    术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 XML 元素中,"<" 和 "&& ...