APK体积优化(附Android Studio操作指引)

本文详细介绍了如何优化APK体积,包括删除未引用的资源、使用WebP和TinyPNG压缩图片、代码混淆、利用Lint检查无用代码、Zip格式优化、classes.dex和lib的调整。通过这些方法,可以显著减小APK大小,提升用户体验。
摘要由CSDN通过智能技术生成

目录

1. 压缩APK体积的意义

2. APK的构成与打包

3. res资源的压缩和优化

3.1 删除没有被引用的资源

3.2 使用WebP压缩图片

3.3 使用TinyPNG压缩图片

4. 删除多余的代码(未被引用的类/方法/变量)

4.1 代码混淆

4.2 利用Lint查找无用代码

5. Zip格式优化

6. classes.dex优化

7. lib优化

8. 参考资料


 

1. 压缩APK体积的意义

 

  • 随着项目的不断迭代,功能越来越多,构建出来的apk文件的大小也会越来越大,这样会导致在移动网络情况下下载时,使用的网络流量会增大,并且apk太大,导致下载的时间也增加,虽然当前每个人的手机的流量都很多,对用户流量影响不大,但是据一些网站统计,安装包越大,用户的转化率是在降低的,所以减少apk的体积,可以让更多的用户愿意去下载和体验产品;[1]
  • 压缩APK体积还有个很重要的意义在于节省手机的内存空间以及存储空间,APK体积压缩之后,运行APP时的资源加载少了,占用的手机内存也会变少,整体运行更为流畅;
  • 对于一些功能比较丰富的软件可能内部采用了多插件的架构,而这些插件可能也是由一个个独立APK组成,那么在用户下载软件后第一次使用插件对应的功能时,也就是冷启动的时候,APK太大就会带来加载过慢的问题,会严重影响用户体验。

 

2. APK的构成与打包

这里拿自己的一个Demo编译生成的release版本的APK作为例子,来看看一个APK里面到底装了什么:

这里详细介绍一下APK里面的组成:[2]

  • lib:存放so文件,可能会有armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips,大多数情况下只需要支持armabi与x86的架构即可,如果非必需,可以考虑拿掉x86的部分;
  • res:存放编译后的资源文件,例如:drawable、layout等等;
  • assets:应用程序的资源,应用程序可以使用AssetManager来检索该资源;
  • META-INF:该文件夹一般存放于已经签名的APK中,它包含了APK中所有文件的签名摘要等信息;
  • kotlin:这些文件包含用于声明标准(“内置”)Kotlin类的数据,这些类未编译为.class文件,而是映射到平台上的现有类型(在本例中为JVM)。例如,kotlin / kotlin.kotlin_builtins包含kotlin包中的非物理类的信息:Int,String,Enum,Annotation,Collection等;
  • classes(n).dex:classes文件是Java Class,被DEX编译后可供Dalvik/ART虚拟机所理解的文件格式;
  • resources.arsc:编译后的二进制资源文件;
  • AndroidManifest.xml:Android的清单文件,格式为AXML,用于描述应用程序的名称、版本、所需权限、注册的四大组件。

这里补充一下App资源被打包进APK的过程,Android构建工具链使用AAPT工具来对资源进行处理,来看下图:

 

3. res资源的压缩和优化

3.1 删除没有被引用的资源

一个Android项目中或多或少都会存在没被引用的资源文件,Android Studio就内置了查找无效资源的Lint工具,下面还

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值