Android-APK瘦身实践:二次瘦身如何再减少大小?
最终,apk减小了188k。
4. 大图缩小
如果经过上面的步骤,依然存在大图的话,说明确实图有点大了,可能真的有点大了!
所以,要考虑的问题是,是否有必要保证如此的大小?能否缩小?如果这方面能减小的话,apk瘦身的效果必然又会上一个档次。
5. 覆盖aar里的一些默认的大图
一些aar库里面包含根本就没有用的图。最典型的是-v4兼容库中包含一些“可能”用到的图片,实际上在你的app中不会用到。
我没有把所有图都替换掉,只是把几张大一点点的图(选中的那些图)用1×1的图片替换,如果图的话,要做成3×3的图替换。
库可能还算好的,就怕有些库引用了一些大图而不自知,可以在/build//-aar/下的各个aar库的res目录查找检验。
apk减小了18k。
有问题可以加下[技术交流群](()一起来讨论~
6. 删除-v7包的so
感谢@杨辉__ ,@kymjs张涛的提醒,-v7和文件夹可以只保留。
当然,-v7a的库会对图形渲染方面有很大的改进,因为我们主要是一些业务上动态库,所以删掉无大碍。
apk减小了191k。
7. 微信资源压缩打包
这个方案网上一直在说,之前一直没有需求或者动力实践,在这里感谢一下@裸奔的凯子哥的推荐和交流,他那边的apk可以压小1M,效果还是比较惊人的。
这个步骤我是在后面很多步压缩之后测试的,每个阶段的压缩结果都会有些许出入,所以数据仅供参考。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img--17)(%/2/w/1240)]
通过正常压缩,apk包减小了464k。
如果开启7zip,apk包减小了594k。
apk减小了594k。
PS: 关于这个压缩,我集成到了脚本中了,新建了一个Task,大概代码如下:
task {
// 在现有的版本上生成到目录下
def appid = “appid”
def = “”
def = file(’…//-1.1.jar’)
def = file(’…//.xml’)
def = file("…/app. a p p i d / b u i l d / o u t p u t s / a p k / r e l e a s e / {appid}/build//apk// appid/build//apk//{appid}-- r o o t P r o j e c t . e x t . v e r s i o n N a m e − {.ext.}- .ext.−{.ext.}- c h a n n e l . a p k " ) d e f o u t p u t D i r = f i l e ( " . . / a p p . {}.apk") def = file("../app. .apk")=file("../app.{appid}/build//apk//")
def = file()
// 开始执行压缩命令
def proc = “java -jar ${} ${} - ${} -out ${} - ${} ${RD} ${} ${}”.();
proc.();
“ code: ${ proc.()}” + “, : ${proc.err.text}” + " : ${proc.in.text}"
开启了7zip, 部分配置如下:
开源项目《//P7//git》 t"=“true”>
/>
[详情参考](()
[原理介绍](()
8. 深度混淆代码
之前为了简单起见,很多包都直接忽略了,现在启动严格模式,把能混淆的都混淆了:
采用微信压缩方案最终效果比较:
apk减小了215k。
PS:混淆后,一定要经过严格测试,有时候甚至很难发现错误,比如我开启严格混淆,用了一段时间之后慢慢发现了两个bug,排除了两个包程序才正常。
9. 深度清理代码和资源
有意思的是,无论何时何地去清理代码和资源,总能有新的发现:
apk减小了66k。
10. 去符号表
之前为了保留调试信息,我们是在保留了符号表的:
- ,
官方渠道我觉得还是尽量保留这个,现在针对推广渠道,只能采用特殊手段,注释这一行。
apk减小了230k。
ps:以后友盟上看推广渠道的bug要辛苦一点,手动上传.txt了。
####11. 关键字
可以对仅在运行时需要的库设置关键字,实际并不被打包:
’com..:-:22.0.0’
我没有发现这样的场景,如果说有的话,就是-,但是经过后来的测试验证,-本来就会在版本中被掉,所以对-设置是没有意义的。
如果有实际场景,欢迎留言说明,不甚感激。
apk没有减小。
12. 表情包在线化
虽然应用的表情不多,只有50来个,但是如果能把这部分表情放到网上,不仅能有效减小apk大小,还可以方便后期扩展支持:
打包成 《学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 .zip, 大小是202k。
现在把.zip放到网上,按需下载后使用,最终对比结果如下:
apk减小了193k。
13. 全版本兼容的着色方案
考虑着色方案主要目的是更方便支持多主题,减轻UI工作量,减少工程里一大堆文件等,然后才是,顺便的减小一下apk大小。
通过着色方案,我们去除了10多张纯色的按下状态图片和对应的xml等等。
最后
希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer !如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
珍惜好好努力,找工作其实挺累挺辛苦的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
[外链图片转存中…(img--20)]