安装包性能优化

安装包性能优化:

1.减小APK大小

2.提高APK运行速率

APK为什么越来越大?

1.随着Android系统版本的碎片化发展和手机类型的极大丰富,每个APP要支持的主流dpi分类越来越多。

2.随着Android生态系统的不断发展,逐渐变得成熟,出现了很多好用的三方库,使用非常方便,由于引入了三方库,就不可避免的引入一些无用的或重复的代码和资源文件。

3.为了提高用户体验,对APP的UI产生了更高的要求,APP提供的资源细节越来越丰富。占用的体积也就越来越大。

从APK文件结构说起

apk解压后的目录

assets:该目录主要存放需要打包到Android应用程序中的静态文件,例如:图片文件,JOSN配置文件,渠道配置文件,数据库文件等。该目录下的文件不会生成对应的资源ID。

lib:该目录主要存放的是应用程序依赖的不同的ABI类型的.so文件。

META-INF:该目录存放的是APK签名相关的密钥文件。用于验证APK包的完整性以及保证系统的安全。

res:该目录存放的是应用的资源文件,包括图片资源、布局资源、尺寸资源、字符串资源等;该目录下的资源文件都会生成对应的资源ID,存放在R.java文件中。

AndroidMainifest.mxl:清单文件,用来控制应用的名称,桌面图标,访问权限等全局属性;此外还有Android 四大组件的生命配置等。

classes.dex:应用程序的可执行文件。Android 代码都打包在该文件中。单个dex文件中的方法数不能超过“64K”;

resources.arsc:资源索引表,资源的描述文件,用来描述具有ID值的资源的对应关系。

根据APK包的组成,影响APK大小的文件可以分为三种类型,分别如下:

        i.Java代码文件:classes*.dex;

       ii.Native(本地)代码文件:lib目录下的.so文件

      iii.资源文件:包括aeests目录、res目录以及resources.arsc文件

综上所述,通过以下几个方面对APK文件进行瘦身:

1.优化图片--图片压缩

目前Android平台原生支持的图片格式有:JPEG、PNG、GIF、BMP、Web

可以通过图片压缩工具对原始图片进行压缩,可以大大较小图片的大小,从而节省空间。

图片压缩工具:tinypng.com/

图片压缩转换工具:isparta.github.io/

2.使用AS自带的Lint工具删除无用资源

Lint不仅能检测内存泄漏,还能检测出没有用到的资源,该工具只是提出建议优化的地方,并不是100%靠谱。

Lint代码检测

3.资源动态加载--插件化开发

插件化开发也是减少一个App体积的可行的途径,某些模块功能代码不必内置APK中,在程序运行的时候动态加载。

4.Proguard(混淆)

通过代码混淆不仅能够提高APK的反编译,还能较小APK大小;混淆可以删除注释和无用的代码;可以将Java文件,变量,方法名登改为短名,这样就可以缩减字符所占的空间,但并不是所有的文件都可以混淆;比如res下的文件,文件res下的资源文件在R.java 文件中都会有对应的ID,如果直接将文件名改了,资源和ID就不对应了。导致程序崩溃。

代码混淆

5.资源“混淆”

上面提到,res下的资源文件不能混淆,如果我们可以将res下的资源文件名也改成短名,并且ID对应关系也改成对应的;这样就可以实现资源文件的“混淆了”,通过对应的工具代码:将资源文件名和对应关系改掉,resources.arsc文件就是资源的描述文件,所以需要对该文件进行读写操作;

resources.arsc文件格式

6.重构和优化代码

保持良好的编码习惯,对你的代码进行持续的优化或者重构,减少代码的重复,实现代码的复用。

最后附上代码:

安装包优化工具代码:github.com/guofudong/ResProguard.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,565评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,471评论 2 59
  • 今天,被某一事件惊到了! 我想不管是真假,为什么每次一定要有噩耗出现或者末日绝望的时候人们才会逐渐考虑生死以及珍惜...
    坏小子小痞子阅读 111评论 0 0
  • 4月14 星期六 多云 每逢星期六,女儿总要睡个懒觉,好像要把一周没有睡够的觉给补上。我起床后就去...
    风平浪静_20b5阅读 308评论 0 0
  • 秋晨 文/朱迅雷 阳光温和,已无戾气 漫步田野,倾情呼吸 环目四顾,荣枯一体 到了放弃争辩的年纪 一切只需静观、欣...
    橘子sandglass阅读 137评论 0 0