如何缩小APK包的尺寸

如何缩小APK包的尺寸

原文:https://developer.android.google.cn/topic/performance/reduce-apk-size.html#reduce-resources

安装包越大,用户等待下载的时间就越长。特别是用户使用2G、3G、或者在根据流量付费使用的时候。本文介绍如何缩小安装包的尺寸。

概述

从理解安装包的结构开始,一个APK包由以下组成:
META-INF/ 签名、证书
assets/ 安装包资源,用AssetManager管理
res/ 资源,不在resources.arsc的资源
lib/ armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, and mips
resources.arsc 包含编译过的资源,包括res/values/文件夹
classes.dex classes编译进Dalvik/ART所能理解的DEX文件
AndroidManifest.xml xml格式,包含名字、版本号、要求的权限,对库的引用等等

缩小的方法可以有:

i、ProGuard压缩、移除无用的资源

在build.gradle中加入

shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

例如:

android {
    // Other settings
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
ii、最小化第三方库

如果第三方库是为服务器端或者桌面版而设计的,它可能会包含很多多余方法和对象。如果证书允许,你可以编辑下这些库。(现在比较多都有分android版,java版,服务器版,使用前注意下就行)
ProGuard压缩也可以清除部分无用的代码,但是不能清除内部的依赖。

iii、支持特定的分辨率

android有这么多个分辨率 ldpi, mdpi, tvdpi, hdpi, xhdpi, xxhdpi, xxxhdpi 只有极少部分会使用特定的尺寸。但是我们推荐每个APP最好包含xxhdpi的尺寸。

iv、减少Animation Frames动画的使用

一堆图片很占空间。推荐使用Drawable Objects、XML(shape)替代

v、压缩PNG图片

可以用aapt工具来减小在res/drawable的png的尺寸。aapt工具可以将不需要多于256种颜色的真彩色PNG转换为具有调色板的8位PNG。 这样做会产生质量相同但占用内存较小的映像。

有几个点需要注意:
1、aapt工具不会优化资源/文件夹中包含的PNG文件。
2、图像文件需要使用256个或更少的颜色的aapt工具来优化它们。
3、aapt工具可能会使已压缩的PNG文件膨胀。为了防止这种情况,可以在Gradle中使用cruncherEnabled标志为PNG文件禁用此过程。

aaptOptions {
    cruncherEnabled = false
}
vi、用webp 格式
vii、维护多个精简的apk版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值