老司机谈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瘦身套路-项目优化篇相关推荐

  1. Android APK 瘦身 - JOOX Music项目实战

    JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App.东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存在很多 ...

  2. APK瘦身记,怎样实现高达53%的压缩效果

    作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...

  3. Android优化系列之apk瘦身

    概述 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好 ...

  4. Android性能优化之APK瘦身最全总结

    Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...

  5. androidstudio打包apk 文件_每天一个小知识——APK瘦身

    唯有美食 不可辜负 温度与风度同在,它虽然地处边角.远离喧嚣,但是到处都满载着精彩,周围弥漫着优雅的闲情逸致. Android性能优化之APK瘦身 面试中面试官常常会问道有关性能优化的问题,而性能优化 ...

  6. APK瘦身-是时候给App进行减负了

    前言 APK瘦身即是对APK大小进行压缩策略,减小APK安装包大小,更小的安装包更有助于吸引用户安装.前一段时间我司某一App进行APK的瘦身,最终也达到了减小10M的目标,现做一个简单的总结记录. ...

  7. Android apk瘦身之使用TinyPng压缩图片

    1 前言 Android apk太大了怎么办,有的时候需要减小apk的体积,例如上传到服务器的时候有文件大小的限制.百度一下,发现大致有以下几种方法: 使用混淆,减少代码体积 删除不使用的资源 减少使 ...

  8. Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇

    Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P  都 ...

  9. Android性能优化之APK瘦身详解(瘦身73%)

    image 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了.可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段. ...

最新文章

  1. 10个角度分析软件工程师应该知道的100件事
  2. android umeng,GitHub - umeng/umeng_community_android: 友盟微社区Android SDK开源项目
  3. C语言二分查找法(指针和数组实现)
  4. ng-model和ng-bind之间有什么区别
  5. eclipse中使用maven插件的时候,运行tomcat7:run的时候报错
  6. 用AB对Webservice做压力测试
  7. SpringBoot生成二维码
  8. 详解MES系统在钢铁企业的应用分析
  9. 《编译原理》画 DAG 图与求优化后的 4 元式代码- 例题解析
  10. python使用金山词霸的翻译功能(调试工具断点的使用)
  11. imatest白平衡测试结果解析
  12. 网站SEO优化高质量内容怎么写
  13. webrtc 研究-带宽控制
  14. java 痛并快乐着 day02(2021-11-09)
  15. 联想拯救者y7000p加内存条_联想 拯救者Y7000P 如何插入SD卡?
  16. FreeRTOS STM32CubeMX port.c(483): error: A1586E: Bad operand types (UnDefOT, Constant) ...
  17. 【单目3D目标检测】MonoDLE论文精读与代码解析
  18. Python-基于OpenCV的轮廓填充 泛洪算法 孔洞填充
  19. 根据收入计算纳税和税后所得
  20. 计算机上的科学计算器在哪里找,计算机的计算器在哪 自己的电脑上的计算器在哪里找...

热门文章

  1. java主键可以包含多列吗,SQLite主键在多列上
  2. 反向传播算法_9.3 反向传播算法的直观理解 Backpropagation Intuition
  3. 如何调用华为云api_postman调用华为云接口添加资源
  4. linux etc 漏洞利用,漏洞利用 | 看我如何利用Kerberos EoP渗透你的Linux系统
  5. 修改sublime列编辑快捷键
  6. android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
  7. android如何编译lame,Android 编译 Lame 库心路历程
  8. js动态载入css文件,原生JS动态加载JS、CSS文件及代码脚本(示例代码)
  9. php 编辑器中使用短代码,php-在WooCommerce短代码输出中更改标记
  10. php多用户商城,php多用户商城选择开源的好