Android App 性能优化之安装包大小

先给出一张Google官方给出的Apk构建流程
在这里插入图片描述
安装包的大致构成

1. assets目录
2. lib目录
3. res目录
4. META-INF 目录
5. AndroidManifest.xml
6. classes.dex
7. resources.arsc

1. assets目录

存放一些配置文件、资源文件,assets不会自动生成对应的ID,通过AssetManager类的接口获取。

2. lib目录

存放程序依赖的jar、aar、so库

3. res目录

res是resource的缩写,存放资源文件,会自动生成对应的ID并映射到.R文件中,通过资源ID使用。

4. META-INF 目录

保存应用的签名信息,签名信息可以用来验证APK文件的完整性。

5. AndroidManifest.xml

用来描述Android应用的配置信息,一些组件的注册信息、可使用权限等。

6. classes.dex

Dalvik 字节码程序,App 打包时通过Android SDK 中的dx工具将java字节码转换为Dalvik 字节码。

7. resources.arsc

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

减少安装包大小常用方案
可使用Android Studio Build 菜单下Analyze APK工具分析APK文件大小分布
在这里插入图片描述 1. so包

so包的支持架构可选部分,比如armeabi-v7a
或者对so文件进行重新编译,因为某些第三方,其实,只用到其中很小一部分

2. 代码混淆

使用proGuard代码混淆器工具,它包括压缩、优化、混淆等功能。
它删除没有用的类,字段,方法与属性,使字节码最大程度地优化,使用剪短且无意义的名字来重命名类、方法、字段。
build.gradle中编译release版本时加入shrinkResources true 开启缩减无用资源的功能。

3. 资源优化

使用Android Lint 删除冗余资源。

4. 图片优化

使用AAPT(Android Asset Packaging Tool 安卓资源打包工具) 对PNG格式图片做压缩,降低图片色彩位数等。
使用TinyPNG对图片资源进行压缩(https://tinify.cn/)
使用WebP图片格式、.9格式图片

5. 尽量不在项目中使用帧动画

一个帧动画会包含很多图片,可以使用lottie-android库

6. 将大资源文件放到服务端

按需下载使用

7. 插件化

功能放在服务器上,按需下载对应模块。

8. 微信资源混淆 AndResGuard原理

通过混淆资源ID长度同时利用7z深度压缩,减少了apk包大小
混淆后在安全性方面有一点提升,提高了逆向破解难度
https://github.com/shwenzhang/AndResGuard

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值