APP减肥:为资源而瘦,让它更好用!

 今天给大家分享的是android瘦身大法,内容涉及较为全面,为大家在今后的开发做个参考!

  第1条:使用一套资源

  这是最基本的一条规则,但非常重要。对于绝大对数APP来说,只需要取一套设计图就足够了。鉴于现在分辨率的趋势,建议取720p的资源,放到xhdpi目录。相对于多套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。注意,这里不是说把不是xhdpi的目录都删除,而是强调保留一套设计资源就够了。

  第2条:开启minifyEnabled混淆代码

  在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小:

  

  在proguard中,是否保留符号表对APP的大小是有显著的影响的,可酌情不保留,但是建议尽量保留用于调试。

  第3条:开启shrinkResources去除无用资源

  在gradle使用shrinkResources去除无用资源,效果非常好。

  

  第4条:删除无用的语言资源

  大部分应用其实并不需要支持几十种语言的国际化支持。还好强大的gradle支持语言的配置,比如国内应用只支持中文:

  

  第5条:使用tinypng有损压缩

  android打包本身会对png进行无损压缩,所以使用像tinypng这样的有损压缩是有必要的。重点是Tinypng使用智能有损压缩技术,以尽量少的失真换来图片大小的锐减,效果非常好,强烈推荐。

  第6条:使用jpg格式

  如果对于非透明的大图,jpg将会比png的大小有显著的优势,虽然不是绝对的,但是通常会减小到一半都不止。在启动页,活动页等之类的大图展示区采用jpg将是非常明智的选择。

  第7条:使用webp格式

  webp支持透明度,压缩比比jpg更高但显示效果却不输于jpg,官方评测quality参数等于75均衡最佳。相对于jpg、png,webp作为一种新的图片格式,限于android的支持情况暂时还没用在手机端广泛应用起来。从Android 4.0+开始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持显示含透明度的webp,使用的时候要特别注意。

  第8条:缩小大图

  如果经过上述步骤之后,你的工程里面还有一些大图,考虑是否有必要维持这样的大尺寸,是否能适当的缩小。事实上,由于设计师出图的原因,我们拿到的很多图片完全可以适当的缩小而对视觉影响是极小的。

  第9条:覆盖第三库里的大图

  有些第三库里引用了一些大图但是实际上并不会被我们用到,就可以考虑用1x1的透明图片覆盖。你可能会有点不舒服,因为你的drawable下竟然包含了一些莫名其妙的名称的1x1图片…

  第10条:删除armable-v7包下的so

  基本上armable的so也是兼容armable-v7的,armable-v7a的库会对图形渲染方面有很大的改进,如果没有这方面的要求,可以精简。这里不排除有极少数设备会Crash,可能和不同的so有一定的关系,请大家务必测试周全后再发布。

  第11条:删除x86包下的so

  与第十条不同的是,x86包下的so在x86型号的手机是需要的,如果产品没用这方面的要求也可以精简。建议实际工作的配置是只保留armable、armable-x86下的so文件,算是一个折中的方案。

  第12条:使用微信资源压缩打包工具

  微信资源压缩打包工具通过短资源名称,采用7zip对APP进行极致压缩实现减小APP的目标,效果非常的好,强烈推荐。建议开启7zip,注意白名单的配置,否则会导致有些资源找不到,粗略配置如下,

  

  第13条:使用provided编译

  对于一些库是按照需要动态的加载,可能在某些版本并不需要,但是代码又不方便去除否则会编译不过。使用provided可以保证代码编译通过,但是实际打包中并不引用此第三方库,实现了控制APP大小的目标。但是也同时就需要开发者自己判断不引用这个第三方库时就不要执行到相关的代码,避免APP崩溃。

  第14条:使用shape背景

  特别是在扁平化盛行的当下,很多纯色的渐变的圆角的图片都可以用shape实现,代码灵活可控,省去了大量的背景图片。

  第15条:使用着色方案

  相信你的工程里也有很多selector文件,也有很多相似的图片只是颜色不同,通过着色方案我们能大大减轻这样的工作量,减少这样的文件。

  第16条:在线化素材库

  如果你的APP支持素材库(比如聊天表情库)的话,考虑在线加载模式,因为往往素材库都有不小的体积。这一步需要开发者实现在线加载,一方面增加代码的复杂度,一方面提高了APP的流量消耗,建议酌情选择。

  第17条:避免重复库

  避免重复库看上去是理所当然的,但是秘密总是藏的很深,一定要当心你引用的第三方库又引用了哪个第三方库,这就很容易出现功能重复的库了,比如使用了两个图片加载库:Glide和Picasso。通过查看exploded-aar目录和External Libraries或者反编译生成的APK,尽量避免重复库的大小,减小APP大小。

  第18条:使用更小的库

  同样功能的库在大小上是不同的,甚至会悬殊很大。如果并无对某个库特别需求而又对APP大小有严格要求的话,比较这些相同功能第三方库的大小,选择更小的库会减小APP大小。

  第19条:支持插件化

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

  第20条:精简功能业务

  这条完全取决于业务需求。从统计数据分析砍掉一些没用的功能是完全有可能的,甚至干脆去掉一些花哨的功能出个轻聊版、极速版也不是不可以的。

  第21条:重复执行第1到20条

  多次执行上述步骤,你总能发现一些蛛丝马迹,这是一个好消息,不是吗?

  相信经过上述步骤,一定可以把你的Android APP极大的瘦身下去。考虑到一定的风险性,建议挑选适合自己的方法就行;同时,我也会跟踪最新的瘦身技巧,及时补充更新。

  更多精彩内容还可关注微信(华清远见):farsight2013

时间: 2024-10-12 00:04:23

APP减肥:为资源而瘦,让它更好用!的相关文章

【直播】APP全量混淆和瘦身技术揭秘

[直播]APP全量混淆和瘦身技术揭秘 近些年来移动APP数量呈现爆炸式的增长,黑产也从原来的PC端转移到了移动端,通过逆向手段造成数据泄漏.源码被盗.APP被山寨.破解后注入病毒或广告现象让用户苦不堪言. 为了解决安卓APP容易被逆向的问题,除了对产品进行加固处理,代码混淆技术是对抗逆向攻击最有效的方式之一.本直播会分享阿里聚安全带来的APP全量混淆技术.此外越来越多的新特性正在啃蚀着大型APP的用户体验,APP瘦身减肥也成了亟待解决的问题,如何能在使用安全功能同时瘦身,也将是本期主题所带来的内

移动APP设计国外资源总汇

目前,对于刚入行移动APP视觉或者交互设计的学习的你来说,一些好的设计辅助工具,一些素材下载,优秀网站设计网站,数据抓取和分析的小助手都是必不可少的.今天主要介绍的都是国外上的一些设计工具的下载,素材框架下载,作品欣赏等等移动ui设计的资源. 第一部分:移动APP设计 Canva 惊艳的轻量级图像设计软件. Fluid UI: 快捷.友好的移动端原型 工具. InVision:用来制作web.移动端原型.UI效果工具,免费. Ink:响应式邮件框架,ZURB出品. Pixlr:在线照片编辑工具.

《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误

http://blog.csdn.net/aqi00/article/details/72907534 http://blog.csdn.net/aqi00/article/details/73065392 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 资源下载 下面是<Android Studio开发实战 从零基础到App上线>一书用到的工具和代码资源:1.本书使用的Android Studio版本为2.2.3,因为Android官网现在不提供该版本的下载,所以博主

Android系统切换语言的时候APP无法更新资源文件的解决方法

你的APP支持多语言环境,假如它正在后台运行,此时用户去更换系统语言,等系统语言换好后直接从后台打开它,此时用户会发现你的界面语言没有和系统语言保持一致:为什么?主要是界面资源没有重新加载 如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次ap

转转hybrid app web静态资源离线系统实践

一.前言 目前的转转app是一个典型的hybrid app,采用的是业内主流的做法: 客户端内有大量业务页面使用webview内加载h5页面承载. 其优点是显而易见的,即:web页面上线频度满足快速迭代的业务需求,不受客户端审核和发版的时间限制,也可以将各个业务线的开发工作分摊到各个业务的fe团队上,使得个业务线可以并行开发. 而缺点,则不言而喻的在于客户端内webview加载h5页面,准确来说是web应用的性能和体验,是肯定不及客户端的.本篇文章中,笔者将会梳理立足于本团队内,根据团队的特点和

一个功能强大的黑科技APP,各种资源一应俱全,拥有你就无敌了!

好用的APP数不胜数,今天给大家分享的这款APP同样出色!功能超级强大,无论是视频.电影.电视剧还是小说.动漫.网盘资源,各种资源应有尽有,赶快和小编一起来领略下它的黑科技吧! 主界面简洁明了,作为一款可以快捷搜索的浏览器,除了百度搜索外,其中还包括神马.好搜.必应和谷歌4个搜索引擎. 软件具有视频.直播.音乐.图片.小说.游戏.资源等常用工具以及其他黑科技工具. 其中视频包含优酷.爱奇艺.腾讯.芒果等各大主流视频平台,同时支持解析VIP视频.还有全网音乐免费下载,具有强大的小说和动漫资源等功能

有哪几种方式可以寻找APP项目需求资源

如今接项目的竞争越来越激烈,不单单是程序员或软件团队参与竞争,更有不少的正规的软件公司也加入其中,而软件项目相对比较少,因此如果想接到一个项目确实比较艰难.这里首先要牢记的一个字是快:就是比别人抢先一步先联系客户.客户都有一种先入为主的思想, 总是对于第一个联系他的人印象比较深刻,如果其他如价格方面又满意的话,十之七八就会把你作为承接项目的最佳人选.那如何去找APP项目需求呢1.社群社群是一个很不错的地方,长时间的积累软件开发群一定能让你获益匪浅,那么你就可以积累自己的客户资源,而且社群做的就是

腾讯数据总监:运营人员必须掌握的APP基础数据分析体系(没有比这篇更系统全面的)

导读:在互联网企业,任何一个APP都要事先规划好数据体系,才允许上线运营,有了数据才可以更好的科学运营.因此本文将为大家介绍APP的基础数据指标体系.主要分为五个维度,包括用户规模与质量.参与度分析.渠道分析.功能分析以用户属性分析.正文 作者:傅志华  来源:鸟哥笔记

深圳app开发哪家公司好?怎么选择更靠谱?

想要更好的判断深圳app开发哪家公司好这个问题,建议在选择的时候需要合理判断,尽量多选择几个公司进行对比,只有这样才能合理进行考量,因为现在从事app开发行业的公司企业越来越多,针对各种不同类型的开发公司服务水平不一样,开发app的效果也会有很大的差别,想要选择更为靠谱的公司,下面这些细节问题千万不要忽略,让app开发效果更好. 1.在选择各种不同类型app开发公司时,如果想要得到更好的体验,避免给自己企业造成不必要的影响,就需要了解开发公司是否具有丰富的经验,工作人员是否有更好的能力水平,尤其