写在前面,这篇文章的目的是记录自己把打包的apk 从11M缩小为5.5M的过程。

先说一下PAD端软件的产生背景,在去年刚休完产假上班的第一周,就接到任务说要做一个针对设备端软件使用的PAD端,只要能传输图像,查看保存的图像就可以,故当时为了能够最快的完成任务,直接套用设备端的代码,并且在不熟悉设备端代码的前提下,不敢随意变更(删减)里面的业务代码。两个星期之内把主业务调试通过,基本功能具备,软件能够使用。后续十一之前归档了一次软件。之后没有再花精力。

最近刚好有时间,就想把代码整理一下,希望把apk包缩小。

如图,下图是依据修改的内容打出的5个包,能看到打包的体积在逐渐减小,下面也是根据打包的时间线来说明优化的过程。

1:首先能看到,第一次打包的软件,体积在11M之多

2:对业务逻辑比较熟了之后,开始着手把项目里面之前由技术手段隐藏View的代码片段改为删除代码,删除部分无用的图片资源,看到打包的apk体积比第一次一些,但是效果不明显

3:第2步打包出来的效果不明显, 于是借助AndroidStudio自带的工具,工具栏Build---->Analyze APK,工具,查看发现打出来的包,assert文件占地比较大,里面只有一个引用的gif文件, 后来检查发现这个gif文件被移动到drawable文件夹下已经被引用,故删除无用的gif文件,再次打包,可以看到,打包的体积被调整至8M多

4:   接下来,发现这个包跟设备端的apk体积差距不大,于是采取两个步骤

  • 1:工具栏  Refactor--->Remove unused Resources, 让编译器自动检测有哪些资源未被调用,这个检测方式,可以列出项目中没有用到的资源文件,包括字符,颜色,xml文件,以及id编号等等,只要项目中没有用到,统统可以清理掉。(减小R文件)。用这个方式清除了很多依靠人力没办法分辨的资源

  • 2:在build.gradle文件里,启用shrinkResources

  • 3:再次编译,可以看到apk包变为7M多

5:在Analyze APK中,看到有一栏中是占据很大的空间,就是lib下面有三个文件夹,分别是x86, armeabi, armeabi-v7a,  查了下对应的是不用类型的处理器,然后现在基本上用的都是armeabi-v7a, 也即是说只用生成一种就可以,于是,在build.gradle中,配置abiFilters "armeabi-v7a"

6:到此为止,果然,编译出来的apk又小了接近2M,从开始到最后,一共缩减了一半的体积。

以上,是记录如何一步步解决问题。接下来,整理一下思绪,排出正确的顺序

1:shrinkResource 和 armeabi-v7a  直接先配置一下

2:Removed unused Resource 运用起来

3: 从Analyze APK中发现占用体积大的图片或者其他资源,按需清理

4:Analyze-->Inspect Code 查阅项目中的代码有没有不合规范的,借助工具

参考资料

1:性能优化缩小apk

2:最佳实践 —— 详细谈谈如何减小APK体积

3:说说Android项目中的armeabi,armeabi-v7a和x86

4: Android 设备的CPU类型(通常称为”ABIs”)

androidstudio打包apk 文件_Android 缩小apk体积过程记录相关推荐

  1. apk文件怎么打开(apk文件怎么打开下载)

    APK文件是Android设备上安装应用程序的文件格式.在Google Play商店中下载应用程序时,文件将以APK格式下载到您的手机或平板电脑中.有时,您可能需要手动安装APK文件,例如从非官方来源 ...

  2. androidstudio打包apk 文件_Android 打包生成APK文件时报lintOptions配置错误

    问题描述: 今天在原来得基础上优化了部分功能,想打包成apk文件安装到手机上运行一下,结果在打包时发生了异常.具体异常如下图所示: 翻译右边的错误: Lint在组装释放目标时发现致命错误. 要继续下去 ...

  3. Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK

    文章目录 1. 签名的作用 2. Android Studio 如何打包签名 3. 反编译 APK 3.1 获取图片资源 3.2 获取 .XML 资源 3.3 获取代码资源 1. 签名的作用 Andr ...

  4. Unity打包生成APK文件提交应用宝踩坑记录

    公司的项目在提交应用宝时,遇到了如下的坑,特记录. 在公司提价APK文件至腾讯应用宝时,腾讯提示有如下错误: 暂时不支持APK Signature Scheme V2,请去掉该类型的签名后再上传. 查 ...

  5. python解析apk文件_Python获取apk文件URL地址实例

    Python获取apk文件URL地址实例 更新时间:2013年11月01日 10:22:39   作者:   我要评论 需要提取apk文件的特定URL地址的朋友可以看一下这个代码实例. 工作中经常需要 ...

  6. android手机如何安装apk文件,如何安装APK文件到自己的android手机里?.doc

    如何安装APK文件到自己的android手机里? 很多朋友刚拿到G1的时候大概首先就是要往里面装软件了,在ANDROID平台下安装文件的后缀名为".apk",就好像PC上的安装文件 ...

  7. apk私钥_Android应用apk的程序签名详解

    在Android系统中,要求所有应用程序必须经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并建立程序间的信任关系. 证书并不用让于用户控制可以安装哪些程序,证书也不需要授 ...

  8. pyinstaller打包exe文件的详细步骤及过程中遇到的问题

    因项目中需要将写好的python文件交给第三方使用,但又不想将源码奉献给别人,所以想着将文件打包成exe文件,方便使用的同时也不暴露源码.---.--- 1.本人的配置环境 平台:windows10 ...

  9. android导出apk文件_Android测试工具入门介绍(三)

    介绍一款牛逼的测试框架Drozer,一款可以检测Android一些公共漏洞的工具(可能远不止这些.还可以继续挖掘),还可以生成shellcode,进行安卓设备的远程exploit. 附下载地址:htt ...

最新文章

  1. 微服务实战(一):微服务架构的优势与不足
  2. java svn 版本号_eclipse中的Java文件自动根据svn版本号生成注释
  3. Leetcode--24. 两两交换链表中的结点
  4. php写两个数相加方法_【PHP学习】实现两个n位二进制整数相加
  5. 华为的型号命名规则_iQOO新品入网;三星Galaxy S21首张官方渲染图曝光;华为nova8真机曝光...
  6. 反编译工具Reflector使用方法
  7. 2018年,20大Python数据科学库都做了哪些更新
  8. python创建配置文件_python3 如何创建一个.ini的配置文件。
  9. 产品密钥无法激活成功,最后使用visio2013激活软件激活成功。
  10. teighax是什么_cut up,cut in,cut off,cut down有什么区别?
  11. java基础——java学习心得
  12. 【think server rd340安装windows server 2008 R2 同时安装RAID驱动程序】
  13. 查看oracle是否删除干净,n你好,之前卸载了oracle,该怎么查看以前Oracle卸载干净没?...
  14. 网站域名如何接入腾讯云CDN业务详细步骤!
  15. UI设计需要使用哪些软件?推荐这5款
  16. 华为商城抢购插件_有赞商城社群接龙全面上线,社群营销玩法升级
  17. 部分算法与对应代码整理(R、Python)
  18. 如何使用使用 HAVING 与 ORDER BY?
  19. Linux--如何解压分卷压缩的文件(zip,tar等等)
  20. android nfc读取公交卡信息_手机NFC可以复制小区用的门禁卡吗?

热门文章

  1. 简约好看导航栏(HTML、CSS)
  2. redis集群和主从配置
  3. 计算机组成原理期末无选择题,计算机组成原理期末考试习题及答案精编(70页)-原创力文档...
  4. qt绘制运动物体_手写QT贪吃蛇,小白高薪捷径-Qt开发
  5. iphonexr电池容量_xr电池容量多少毫安,iphonexr换电池多少钱
  6. PCL——从PCD文件中读取点云数据
  7. Halcon 抓圆工具spoke
  8. Widows下TortoiseGit登录密码错误
  9. Linux常用基本命令:三剑客命令之-awk内置函数用法
  10. 【hyddd驱动开发学习】DDK与WDK