随着项目不断地完善,资源不断地增多,导致apk大小越来越大,编译以及安装等待时间越来越长,虽然对应用使用并没有影响,但是用户会越不愿意下载。还有特别是在使用移动网络的时候,用户更不会浪费流量去下载,所以我们得尽量缩小apk大小。

安装包主要由7部分组成:

assets:存放一些配置文件、资源文件,assets不会自动生成对应的 ID,而是通过 AssetManager 类的接口获取。
res: 是 resource 的缩写,这个目录存放资源文件,会自动生成对应的 ID 并映射到 .R 文件中,访问直接使用资源 ID。
AndroidManifest.xml:这个文件用来描述 Android 应用的配置信息,一些组件的注册信息、可使用权限等。
META-INF:保存应用的签名信息,签名信息可以验证 APK 文件的完整性。

resources.arsc:记录着资源文件和资源 ID 之间的映射关系,用来根据资源 ID 寻找资源。

classes.dex:Dalvik 字节码程序,让 Dalvik 虚拟机可执行,一般情况下,Android 应用在打包时通过 Android SDK 中的 dx 工具将 Java 字节码转换为 Dalvik 字节码。

lib:程序依赖的库,包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。

目前我的Apk大在3个方面

重复的第三方库(so.jar等)

assets文件太大(含有多余资源)

res太大(含有多余资源,资源图片太大)
解决办法

1.三方库优化

避免引用重复库以及清除冗余库。一般引用so库都需要适应各个so架构("armeabi-v7a", "x86", "arm64-v8a", "x86_64", "armeabi"),每个文件里都会放重复的so文件,当so文件一旦过大,占用的空间会很大。这就要考虑apk使用机型范围了,因为市面大多都是Android 5.0 -Android 7.1之间的系统,具备浮点运算的硬件指令集,所以直接用"armeabi-v7a"可以提高app的浮点运算性能,同时能兼容大多数安卓设备,如果机型不支持v7a那么就尽量把so替换成其他更小的so文件或者是自己重新编译。

2、res优化

移除无用的资源,可以手动删掉,也可以一键清除(不建议,容易误删出现动态id使用资源问题)

推荐使用lint检查, Android Lint Tool 是 Android Sutido 集成的一个代码规范提示工具,不仅让你及时发现代码种隐藏的一些问题,更能让你养成良好的代码风格。可以使用 Lint 检测代码、布局文件、去除多余资源。

  • 尽量使用统一一套资源,各个分辨率都一套资源太浪费。
  • 图片可以使用小点的图片或者 PNG优化工具(tinypng) 对图片做压缩处理,会使图片收缩50% - 70%,如果机型在4.0以上可以使用Webp,这样会更小。(使用方法:右键图片)
  • 尽量别使用帧动画,一个动画就十几张图片占用空间太大。
  • 背景能使用shape的就尽量别使用图片背景

3、assets优化 

这里面一般存的都是软件自带的一些配置文件,以及资源。如果是单机版不能连网的手机那这是不可避免的,只能尽量删除一下不必要的资源。如果能连网那么就不需要这个文件了,应该在第一次启动时网上下载配置文件,这样更方便。

4、插件化热修复

能连网的前提下,把功能模块以及资源放在服务器上,按需下载。

5、代码混淆

在build.gradle中使用minifyEnabled 混淆代码

buildTypes {release {// 源代码混淆开启minifyEnabled true}}

6、开启资源压缩

在build.gradle中使用shrinkResources压缩资源(据说会有bug,我目前还未遇到)。

buildTypes {release {// 启动资源压缩shrinkResources true}}

7、资源混淆和7zip压缩

资源混淆配合7zip压缩减小apk大小,并且增加了破解难度。

通过resoure.arsc文件格式混淆 步骤为:

  • 解析arsc文件(主要为全局与资源名字符串池)
  • 修改字符串池中,以无意义的abcd等代替
  • 修改apk中res目录资源文件名
  • 7zip打包对齐签名

Android APK瘦身相关推荐

  1. Android Apk瘦身指南大全

    Android Apk瘦身指南大全 前言 为什么Android应用Apk要瘦身?虽然安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高,安装等待时间也会越长,特别是在移动网络情况下, ...

  2. Android APK 瘦身

    Android APK 瘦身的几个方法 将项目中的图片由png.jpg转为webp格式.如下操作: 1.1选中图片或者含有图片的文件夹 右键选择Convert toWebP.. 1.2根据自身情况选择 ...

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

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

  4. Android apk瘦身讲解

    apk瘦身 想办法较减少apk大小 必要性 同样功能,apk越小越好,用户下载动机更大 了解apk的组成 classes.dex:是java源码编译后生成的java字节码文件 resources.ar ...

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

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

  6. android APK瘦身全面总结——如何从32.6M到13.6M

    前言 之前我简单介绍了关于svg图片瘦身的问题,在公司,瘦身这个问题是我提出来的,所以这锅我背了.公司项目是32.6M,我给自己的要求就是低于20M.上周花了一个星期瘦身,至于为什么花了一周,主要是s ...

  7. android apk瘦身方法

    参考文档:天之界线2010   http://www.jianshu.com/p/8f14679809b3 我们在新的android studio2.2中可以看到可以对apk 进行分析了: 我们从中可 ...

  8. Android Apk瘦身方案1——R.java文件常量内联

    R.java 文件结构 R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系.先创建一个最简单的工程,看看 R.java 文件的内容: R文件生成的目录为app/build/gen ...

  9. Android apk瘦身

    项目打包apk到达50M(加入高德地图和视频播放的SDK),之前打包才20M多.如何减少apk的大小: Android studio有个分析apk的功能,可以查看apk的结构 选择apk文件 可以看到 ...

最新文章

  1. 移动通信网络中的数字基带
  2. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
  3. idea取消comiit_IDEA 合并多次commit为一个?
  4. 良心之作----centos6.5下安装svn客户端报错
  5. 结构体指针需要申请指针内存,结构体对象不需要申请对象内存
  6. 他是绝世天才,却只开了半辈子的挂!死后惨遭封号200年,这就是和牛顿抬杠的下场.........
  7. linux系统的层次结构,关于Linux操作系统层次结构分析
  8. matlab代码转换成python_[Python]40行代码实现公式转换成图片,手把手教你从模仿到实现...
  9. window 下的mysql_Window下mysql的安装
  10. 51nod 1135 原根(原根)
  11. 佳顺通用进销存系统去广告_怎样选择免费进销存软件?
  12. 影响力 读后感 书评
  13. 直播电商平台开发,点击让窗口抖动动画效果
  14. 7-1 房屋分拆 (25 分)(C语言版)
  15. java中短信验证登录_java实现短信验证码功能
  16. NoSQL在腾讯的应用实践
  17. 读懂2014年全球互联网广告新生态
  18. 在EXCEL下用VBA编程提高人事数据的管理效率
  19. Uniapp离线打包使用高德地图教程及常见问题
  20. Flutter 自定义Decoration

热门文章

  1. JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils
  2. 【编程之美】买票找零
  3. Visual Studio Code 解决因为Vetur导致的红色波浪线报错问题
  4. TP5 validate验证机制
  5. 移动式太阳能计算机教室,可移动式光伏光热一体化实验实训系统
  6. Knowledge Graph生物信息【论文阅读笔记】
  7. 《30岁前别结婚》读后感
  8. html页面中给元素添加事件常见的3种语法
  9. 白芝麻的功效与作用有哪些 白芝麻的营养价值
  10. LV 旗下公司研发鉴定工具,四秒识别假包包