-
Notifications
You must be signed in to change notification settings - Fork 784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-06-20:谈谈怎么给apk瘦身? #80
Comments
代码优化混淆,资源过滤没有引用的,xml 文件名混淆,so最低兼容,图片使用webp或svg,删除打包后多屏幕支持的资源,apk解压再zip压缩签名 |
res目录优化:将png格式转webp或svg格式, |
第1条:使用一套资源这是最基本的一条规则,但非常重要。 第2条:开启minifyEnabled混淆代码在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小:
在proguard中,是否保留符号表对APP的大小是有显著的影响的,可酌情不保留,但是建议尽量保留用于调试。 第3条:开启shrinkResources去除无用资源在gradle使用shrinkResources去除无用资源,效果非常好。
第4条:删除无用的语言资源大部分应用其实并不需要支持几十种语言的国际化支持。还好强大的gradle支持语言的配置,比如国内应用只支持中文:
第5条:使用tinypng有损压缩android打包本身会对png进行无损压缩,所以使用像tinypng这样的有损压缩是有必要的。 第6条:使用jpg格式如果对于非透明的大图,jpg将会比png的大小有显著的优势,虽然不是绝对的,但是通常会减小到一半都不止。 第7条:使用webp格式webp支持透明度,压缩比比jpg更高但显示效果却不输于jpg,官方评测quality参数等于75均衡最佳。 第8条:缩小大图如果经过上述步骤之后,你的工程里面还有一些大图,考虑是否有必要维持这样的大尺寸,是否能适当的缩小。 第9条:覆盖第三库里的大图有些第三库里引用了一些大图但是实际上并不会被我们用到,就可以考虑用1x1的透明图片覆盖。 第10条:删除armable-v7包下的so基本上armable的so也是兼容armable-v7的,armable-v7a的库会对图形渲染方面有很大的改进,如果没有这方面的要求,可以精简。 第11条:删除x86包下的so与第十条不同的是,x86包下的so在x86型号的手机是需要的,如果产品没用这方面的要求也可以精简。 第12条:使用微信资源压缩打包工具微信资源压缩打包工具通过短资源名称,采用7zip对APP进行极致压缩实现减小APP的目标,效果非常的好,强烈推荐。
会生成一个andresguard/resguard的Task,自动读取release签名进行重新混淆打包。 第13条:使用provided编译对于一些库是按照需要动态的加载,可能在某些版本并不需要,但是代码又不方便去除否则会编译不过。 第14条:使用shape背景特别是在扁平化盛行的当下,很多纯色的渐变的圆角的图片都可以用shape实现,代码灵活可控,省去了大量的背景图片。 第15条:使用着色方案相信你的工程里也有很多selector文件,也有很多相似的图片只是颜色不同,通过着色方案我们能大大减轻这样的工作量,减少这样的文件。 第16条:在线化素材库如果你的APP支持素材库(比如聊天表情库)的话,考虑在线加载模式,因为往往素材库都有不小的体积。 第17条:避免重复库避免重复库看上去是理所当然的,但是秘密总是藏的很深,一定要当心你引用的第三方库又引用了哪个第三方库,这就很容易出现功能重复的库了,比如使用了两个图片加载库:Glide和Picasso。 第18条:使用更小的库同样功能的库在大小上是不同的,甚至会悬殊很大。 第19条:支持插件化过去的一年,插件化技术雨后春笋一样的都冒了出来,这些技术支持动态的加载代码和动态的加载资源,把APP的一部分分离出来了,对于业务庞大的项目来说非常有用,极大的分解了APP大小。 第20条:精简功能业务这条完全取决于业务需求。 第21条:重复执行第1到20条多次执行上述步骤,你总能发现一些蛛丝马迹,这是一个好消息,不是吗? 第22条:Facebook的redex优化字节码redex是facebook发布的一款android字节码的优化工具,需要按照说明文档自行配置一下。
|
1.grandle文件中开启混淆,shrinkResources去掉无用资源,resConfigs "zh"去掉无用资源 |
打卡 |
学习了 |
SO包只适配v7a 动态库一般只需要配置armeabi-v7a即可 |
No description provided.
The text was updated successfully, but these errors were encountered: