老司机谈APK瘦身套路-项目优化篇
老司机谈APK瘦身套路-项目优化篇
在上一篇文章中,老司机带领大家一起学习了图片资源的瘦身套路,收到了很多中学生读者的好评。 想了解的童鞋请点击:blog.csdn.net/mynameishua… 这次,老司机继续开车,给大家分享APK瘦身套路之项目优化篇。为了更好的跟大家说明瘦身套路,我把优化分为项目结构瘦身和代码瘦身两部分。
1.项目结构瘦身套路
套路一:引入库的优化
去掉无用的库
项目中如果apk支持的最低版本是API14,而代码中没有用到高于api14的api就可以考虑去掉整个android support库。
最小化集SDK
很多小伙伴在项目中都引入了友盟工具,但是很多时候我们往往只需要友盟分享,那么我们可以把项目引入的友盟推送去掉,只集成友盟分享SDK,已达到精简的目的。
套路二:Gradle优化配置
使用minifyEnabled配置混淆代码
使用AndroidStudio开发的小伙伴,可以在gradle利用minifyEnabled进行Proguard混淆的配置,这么做可以大大减小APP大小:
android {buildTypes {release {minifyEnabled true}}
}
在proguard中,是否保留符号表对APP的大小是有显著的影响的,可酌情不保留,但是建议尽量保留用于调试。
使用shrinkResources配置去除无用资源
使用AndroidStudio开发的小伙伴,可以在gradle利用shrinkResources去除无用资源,效果很棒。
android {buildTypes {release {shrinkResources true}}
}
使用语言配置,去除多余的语言支持
使用AndroidStudio开发的小伙伴,可以在gradle中精简语言配置,比如国内应用之配置支持中午,不需要其他国际化的几十种语言支持。
android {defaultConfig {resConfigs"zh"}
}
套路三:谨慎处理项目中的so
删除armable-v7包下的so
基本上armable的so也是兼容armable-v7的,armable-v7a的库会对图形渲染方面有很大的改进,如果没有这方面的要求,可以精简。这里不排除有极少数设备会Crash,可能和不同的so有一定的关系,请大家务必测试周全后再发布。
删除x86包下的so
x86包下的so在x86型号的手机是需要的,如果产品没用这方面的要求也可以精简。建议实际工作的配置是只保留armable、armable-x86下的so文件,算是一个折中的方案。
套路四:利用微信资源压缩打包工具
微信中的资源混淆工具主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格,提升了反破解难度。 使用说明:微信资源压缩打包工具使用介绍 技术原理介绍:安装包立减1M--微信Android资源混淆打包工具
2.代码瘦身套路
套路一:清理掉废弃代码
项目打包前仔细核对检查源码,删除无用的逻辑代码、过期的业务功能代码、多余的注释代码以及废弃的test代码。
套路二:有条件的项目使用插件化开发
针对有条件的企业,将来可以将自己的应用分拆,某些功能可以以产检的形式动态加载实现,用到时再进行云端下载。动态加载插件化技术无疑从根本上减少了apk的体积,但是引入这个技术是有代价的,增加了项目的维护难度和开发难度。所以该技术适用于大型的移动应用,当你的业务大到不分开模块难以高效率开发维护的时候,再考虑动态加载技术吧,否则如果小规模应用,还是老老实实考虑传统的android官方推荐的开发方式。下面推荐几个比较好的动态加载开源框架项目供大家学习
dynamic-load-apk
360DroidPlugin
套路三:使用HTML5进行界面开发
项目中针对新闻、咨询类需求的详情页,可以使用HTML5进行开发,这样可以大大减少使用原生控件开发带来的额外空间开销。
套路四:提高代码质量
使用Eclipse的小伙伴利用好FindBugs
Findbugs是一个开源的eclipse 代码检查工具;它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以及潜在隐患。针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考; 通过使用它,可以一定程度上降低我们code review的工作量,并且会提高review效率。 通过findbugs找到bug,再由我们自己重构代码,可以培养我们的编码意识及水平,形成好的习惯提高开发编码能力。
使用AndroidStudio的小伙伴利用好Lint
Lint通过对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题,比如:
布局性能(以前是 layoutopt工具,可以解决无用布局、嵌套太多、布局太多)
未使用到资源
不一致的数组大小
国际化问题(硬编码)
图标的问题(重复的图标,错误的大小)
可用性问题(如不指定的文本字段的输入型)
manifest文件的错误
总结
至此,老司机谈APK瘦身套路系列文章已经完结,相信已上车的小伙伴都能很好地掌握APK的瘦身方法,选择适合自己项目的套路,相信你的APK定会瘦身成功。
老司机谈APK瘦身套路-项目优化篇相关推荐
- Android APK 瘦身 - JOOX Music项目实战
JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App.东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存在很多 ...
- APK瘦身记,怎样实现高达53%的压缩效果
作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...
- Android优化系列之apk瘦身
概述 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好 ...
- Android性能优化之APK瘦身最全总结
Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...
- androidstudio打包apk 文件_每天一个小知识——APK瘦身
唯有美食 不可辜负 温度与风度同在,它虽然地处边角.远离喧嚣,但是到处都满载着精彩,周围弥漫着优雅的闲情逸致. Android性能优化之APK瘦身 面试中面试官常常会问道有关性能优化的问题,而性能优化 ...
- APK瘦身-是时候给App进行减负了
前言 APK瘦身即是对APK大小进行压缩策略,减小APK安装包大小,更小的安装包更有助于吸引用户安装.前一段时间我司某一App进行APK的瘦身,最终也达到了减小10M的目标,现做一个简单的总结记录. ...
- Android apk瘦身之使用TinyPng压缩图片
1 前言 Android apk太大了怎么办,有的时候需要减小apk的体积,例如上传到服务器的时候有文件大小的限制.百度一下,发现大致有以下几种方法: 使用混淆,减少代码体积 删除不使用的资源 减少使 ...
- Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇
Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P 都 ...
- Android性能优化之APK瘦身详解(瘦身73%)
image 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了.可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段. ...
最新文章
- 10个角度分析软件工程师应该知道的100件事
- android umeng,GitHub - umeng/umeng_community_android: 友盟微社区Android SDK开源项目
- C语言二分查找法(指针和数组实现)
- ng-model和ng-bind之间有什么区别
- eclipse中使用maven插件的时候,运行tomcat7:run的时候报错
- 用AB对Webservice做压力测试
- SpringBoot生成二维码
- 详解MES系统在钢铁企业的应用分析
- 《编译原理》画 DAG 图与求优化后的 4 元式代码- 例题解析
- python使用金山词霸的翻译功能(调试工具断点的使用)
- imatest白平衡测试结果解析
- 网站SEO优化高质量内容怎么写
- webrtc 研究-带宽控制
- java 痛并快乐着 day02(2021-11-09)
- 联想拯救者y7000p加内存条_联想 拯救者Y7000P 如何插入SD卡?
- FreeRTOS STM32CubeMX port.c(483): error: A1586E: Bad operand types (UnDefOT, Constant) ...
- 【单目3D目标检测】MonoDLE论文精读与代码解析
- Python-基于OpenCV的轮廓填充 泛洪算法 孔洞填充
- 根据收入计算纳税和税后所得
- 计算机上的科学计算器在哪里找,计算机的计算器在哪 自己的电脑上的计算器在哪里找...
热门文章
- java主键可以包含多列吗,SQLite主键在多列上
- 反向传播算法_9.3 反向传播算法的直观理解 Backpropagation Intuition
- 如何调用华为云api_postman调用华为云接口添加资源
- linux etc 漏洞利用,漏洞利用 | 看我如何利用Kerberos EoP渗透你的Linux系统
- 修改sublime列编辑快捷键
- android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
- android如何编译lame,Android 编译 Lame 库心路历程
- js动态载入css文件,原生JS动态加载JS、CSS文件及代码脚本(示例代码)
- php 编辑器中使用短代码,php-在WooCommerce短代码输出中更改标记
- php多用户商城,php多用户商城选择开源的好