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

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

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

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

首先 分析你的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. (7)redis pipeline

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常 会阻塞并等待redi ...

  2. 【Java】Java原生的序列化和反序列化

    写一个Java原生的序列化和反序列化的DEMO. 需序列化的类: package com.nicchagil.nativeserialize; import java.io.Serializable; ...

  3. 取出ip address control的ip字符

    1.给这个空间设置control型变量 m_add; 2.定义4个字节型变量,来获取控件中的4个ip字节 BYTE a,b,c,d: m_add.GetAddress(a,,b,c,d): 3.定义I ...

  4. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  5. 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]

    Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...

  6. Using SYSTEM.MOUSE_ITEM In Oracle Forms

    If the mouse is in an item, SYSTEM.MOUSE_ITEM represents the name of that item as a CHAR value.For e ...

  7. hdu 2141 (二分)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java/O ...

  8. 5.mybatis一对一表关联查询

    方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集,封装联表查询的数据(去除重复的数据)  SELECT * FROM class c,teacher t WHERE c.tid = t.t ...

  9. Android中的五大布局和logcat打印日志

    在android中的布局有五大类,有的时候你可能用到一种,但有的时候你也可能需要两种或者三种布局同时一起使用.这五种布局为别为:LinearLayout(线性布局),FrameLayout(框架布局) ...

  10. SAP 批量查看凭证更改记录

    1,在凭证上点击环境->凭证变更 查找.2,通过运行程序 SE38:RSSCD1TS 根据对象类.对象标识查找. 3,SE16N/SE16/SE11查看标准表,CDHDR(更改凭证抬头),CDP ...