热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何给安卓apk瘦身?

现在很多公司都尽量缩小发布apk的大小,目的是提高用户体验。但是像滴滴这样霸气的公司不怕你不用,所以在这方面就没做优化,现在的滴滴出行apk已经59M了,就是这么

           现在很多公司都尽量缩小发布apk的大小,  目的是提高用户体验。 但是像滴滴这样霸气的公司不怕你不用,   所以在这方面就没做优化, 现在的滴滴出行apk已经59M了, 就是这么屌! 显然是告诉用户在wifi环境里下载。 但大多数应用不能这样干,   因为没有像滴滴那样有垄断的地位。 言归正传, 减少apk体积主要分如下5个方面:

1、  apk插件化和动态加载,   将代码和资源分成多个apk包, 用户从应用市场下载的可能只是壳。 当用户点击某个按钮时再去下载对应的apk资源并动态加载, 典型案例就是支付宝。 而且插件化也是安卓面试中很常见的问题,   相关技术可参见博客:    http://weishu.me/


2、  老生长谈的优化数据结构,重构代码(用android studio的refactor菜单)等,  即减少java文件数和方法数(删除冗余代码)。   其实这样节省不了多少空间, .class文件很小。


3、   删除冗余的三方库, 并尽量换成体积小的三方库,  前提是综合判断性能、功能和空间, 也不能一味的追求体积小的三方库。 例如几乎每个互联网app都用到了百度地图或高德地图sdk,  高德地图sdk体积比较小很多, 区别主要是百度地图sdk有一堆的so文件, 而高德地图sdk不需要集成so,  所有建议用高德地图(占用空间更小)。


4、 减少res目录下资源文件的大小(主要是图片), 可以使用android studio提供的插件lintCleaner删除冗余的布局和图片。


5、  使用适当的图片压缩格式,   当然能用xml搞定的就不用其它格式的, 推荐优先级VectorDrawable->WebP->png->jpeg。图片压缩格式可见这个博文:  http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236506&idx=1&sn=50e3f4d5bf9ca7f098482e680c1a577f&scene=23&srcid=0721ojbape0BVgFjpbbKy3Uh#rd


         综上, 插件化实现起来比较麻烦,  效果也最好;   其它4个方法主要是为了减少res和lib目录下的空间。


      我的微信公众号, 欢迎关注, 让我们一起成长大笑

                         



推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 安卓中的刮刮卡视图,示例原文:https://www.gee ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
魂丢丶她城
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有