安卓APK瘦身

安卓开发中,打包生成的APK大小对于开发者来说,其实并没有多大影响,但在面向用户时,APK的大小就很重要了,APK过大会导致用户下载需要耗费更多时间与流量,从而影响用户体验与产品推广,特别是那种频繁更新的应用。因此,减少APK大小很重要,下面我将介绍如何给APK瘦身:

1.APK资源组成

在对APK进行“瘦身‘前,我们先来了解下APK的组成,我们可以把一个apk解压,目录结构一般如下所示:

资源说明
assets安卓项目需要打包到APK里面的静态资源
kotlinkotlin相关的文件
META_INF存放程序签名和证书
okhttp3第三方库okhttp生成的文件
res项目的图片drawable等资源

AndroidManifest.xml

配置文件
androidsupportmultidexversion.txtmultidex分包记录文件
classes.dexdex可执行文件,Android应用在打包时通过Android SDK 中的 dx 工具将 Java 字节码转换为 Dalvik 字节码
resources.arsc资源映射文件,记录各个资源的对应关系

从上图我们其实可以看出,apk内比较占大小的有assets、res、.dex和resources.arsc文件,那么我们在优化APK大小的时候就可以从这几个文件或目录入手。

2.减少APK大小

(1)代码混淆

使用IDE 自带的 ProGuard 代码混淆工具 ,可以压缩、优化、混淆你的java/kotlin代码,可以有效减少编译后字节码文件的大小。混淆方法可以参考我的另一篇博客:安卓代码混淆

(2)图片优化

针对项目中用到的图片资源,尽可能缩减图片的大小,例如使用PNG优化工具或者在TinyPNG对图片进行压缩。

(3)资源优化

针对不需要使用的资源,尽量不要引入到项目中,也可以使用Android Lint检查冗余资源,然后删除

也可以在build.gradle开启shrinkResources,移除无用资源

buildTypes {
   release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
   }
}

(4)引入尽量少的第三方库

有些第三方库的SDK会很庞大,使用前先考虑清楚是否有必要引入,或者考虑是否可以只引入部分功能的SDK,例如百度地图SDK,我只需要定位功能,就别引入其他无关功能的lib。针对so库,一般不需要引入X86架构的库,尽量使用armeabi架构的so。

(5)使用动态更新技术

这里说的动态更新技术包含热修复技术,hybrid技术等等,把app的核心功能集中在一起,其他功能可以通过插件、H5的形式在app启动时加载,可以有效减少原始apk的大小,也方便后续更新。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猫King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值