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

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

目录

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工具,下面还是以Demo作为例子介绍一下具体的操作步骤:

步驟一:在上方菜单栏点击Analyze -> Run Inspection by Name...

### 如何在 Android Studio 中进行项目或资源压缩 #### 使用 SDK Tools 和 Gradle 进行代码压缩 为了实现项目的有效压缩,可以利用 SDK Tools 25.0.10 或更高版本以及适用于 Gradle 的 Android 插件 2.0.0 或更高版本。这些工具能够帮助移除未使用的类、字段、方法和属性,从而减小程序体积[^2]。 ```groovy android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } ``` 此配置启用了 ProGuard 工具用于混淆并缩小 APK 文件大小的功能,在 `release` 构建类型下设置 `minifyEnabled` 属性为 `true` 即可激活该功能。 #### 利用 TinyPNG 插件优化图像资源 对于图片资源的压缩,推荐安装 **TinyPNG Image Optimizer** 插件到 Android Studio 中。这允许开发人员快速而高效地减少 PNG 和 JPEG 图像文件尺寸而不明显影响视觉质量[^3]。 - 打开 Android Studio 并前往 `Plugins` 安装 TinyPNG 插件; - 导航至要处理的图片所在目录右键点击选择 “Optimize with TinyPng”。 这样不仅简化了操作流程还提高了工作效率。 #### 替换默认启动图标以适应不同分辨率需求 当涉及到替换应用内的特定图形资产如 `ic_launcher.png` 时,则可以通过访问指定网址在线生成适配多种屏幕密度的图标集,并按照路径指引将其放置于相应位置: > 解压下载好的文件夹并将其中的内容复制粘贴覆盖原有同名文件位于如下地址: > > Windows/Mac 上找到 `AndroidStudioProjects > "应用程序名称" > app > src > main > res` 下各个 drawable-*dpi 子文件夹内[^1] 通过上述措施共同作用,最终达到精简整个打包过程的效果,使得发布的应用程序更加轻量化且加载速度更快[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值