Android的极致瘦身

Android的极致瘦身

删除无用代码

代码也是占用apk的大小,而且有部分代码引用一些无关的资源,然而你想删除这部分资源必须删除特定的代码

资源压缩

  1. 第一个压缩是通过TinyPNG网站进行压缩的。这里的压缩也有个好处,当你图片格式选择
BitmapFactory.decodeByteArray(b, 0, b.length, opt);
opt.inPreferredConfig = Bitmap.Config.RGB_565;

或者inPreferredConfig不填时,占用内存会小3/4.这个会对通道有影响,但是在大部分图片的现实没有问题

  1. 图片格式的选择,大图可以选择使用webp的格式,可以很好的压缩图片大小,但是有个兼容性的问题:Android4.0到Android4.2.1之间的版本不支持无损压缩和透明格式的WebP图片的编解码,这个需要也可以解决使用通用自己的webp格式decode,但是这也会增加包大小,当图片很多时,可以采取这种方式。我打的so有82K,自己权衡吧,我觉得值的。
  2. .9图之坑,apk打包的时候会把.9图转成png,这时会无形中增加3倍图片大小.如果一张很大的.9图,最好放在网上,能不用大的.9图就不用.9图,放在外网时需要对.9图做特殊处理。
  3. 合并项目中一样的图,如关闭按钮等,删除一样的图
  4. 将一些不是很重要的图放服务器下载,有可能的话使用webp,放网上也能节省流量。我这里是剔除了所有大于10K的图。
  5. 使用cocosjs的朋友,可以将打成的图集过下TinyPNG,能节省不少。
  6. 资源尽量放在drawable-xhdpi中,一些适配的资源可以单独抽出来放,大部分资源没必要放很多
  7. 如果支持的so的版本不多的话尽量放在armeabi中,不使用其他的so,如果不能的话,会有一个压缩的库供大家选择,下面会具体介绍的,so可以使用7Z再次压缩。有compile的包使用如下的代码放gradle
  ndk {
            // 设置支持的SO库架构
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }

gradle优化和工具使用

  1. 在gradle使用minifyEnabled进行Proguard混淆的配置
android {
    buildTypes {
        release {
            minifyEnabled true
        }
    }
}
  1. 开启shrinkResources去除无用资源
android {
    buildTypes {
        release {
            shrinkResources true
        }
    }
}
  1. 清理无用资源
    通过Android Studio自带的 “Remove Unused Resources”小插件来实现了,但是在某些大型项目上这个是不好使的。删除后很大概率编译失败或部分页面挂死、无图等问题。
  2. 删除无用的语言资源
android {
    defaultConfig {
        resConfigs "zh"
    }
}
  1. 微信资源压缩打包工具通过短资源名称,采用7zip对APP进行极致压缩实现减小APP的目标,效果非常的好。建议开启7zip,注意白名单的配置
  2. 针对so的7z压缩方案,如果项目so多的话,可以节省很多空间。
    https://github.com/liyuming1978/NativeLibCompression
  3. 支持插件化,这个需要拆分代码,我们还在努力拆分中。

插件化技术支持动态的加载代码和动态的加载资源,把APP的一部分分离出来了,对于业务庞大的项目来说非常有用,极大的分解了APP大小。
因为插件化技术需要一定的技术保障和服务端系统支持,有一定的风险,如无必要(比如一些小型项目,也没什么扩展业务)就不需要了,建议酌情选择

  1. 清理第三方库和冗余代码,比如httpclient4.3 jar等等公共基础库
  2. Facebook的redex优化字节码

另外,据反应redex后会有崩溃的现象,这个要留意一下,我这里压缩之后都是可以正常运行的

综上:我们原来49M左右大小的包 优化后大约34.27M

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

推荐阅读更多精彩内容