Android 压缩优化apk
2017-05-25 14:08
155 查看
随着业务需求的扩展,apk size会不断增加,size太大会影响用户下载和升级的意愿,压缩size是每个大型app必须的工作。
首先来看一下apk的构成:
主要包含资源和代码,那压缩size就要从这2方面入手。
通过lint或resource shinking等删除无用资源
2. 压缩图片
1)无透明度的png转成jpg
2)通过tinypng, tinyjpg等进行有损压缩,或通过ImageOptim进行无损压缩
3)在不影响质量的提前下将大图转换成webp
3. 压缩动画
压缩loading等gif动画,及其它较大的资源,如mp3
4. 动态加载
对动态表情等特定业务场景才使用的动画等资源做动态加载,app启动后在线下载,不随apk发包。
5. 使用微信资源压缩方案
方案见 https://github.com/shwenzhang/AndResGuard
proguard不仅能够混淆,而且能够优化代码,可以大大减小dex文件的大小。
但需要对被反射引用的类需要做好keep
2. 动态加载
对ocr(身份证识别)等较大的库做动态加载,app启动后在线下载,不随apk发包。
3. 插件化
将相对独立的业务做成插件,app启动后在线下载,不随apk发包。
4. 删除非必要的so库
很多app为了支持x86,apk至少包含arm和x86 2个ABI,甚至包括arm其实x86构架的手机也支持arm,可以删除x86 so,只保留arm。
有人认为x86手机以兼容模式运行arm so会影响效率,其实效率上的影响对用户并没有直接的感知。
删除x86 so可以大大减少apk size,特别是app集成了很多第三方so库的情况下,如fresco,rn等。
关于so的介绍详见Android
动态链接库加载原理及 HotFix 方案介绍
5. Facebook字节码优化方案redex
方案见 https://github.com/facebook/redex
首先来看一下apk的构成:
主要包含资源和代码,那压缩size就要从这2方面入手。
资源方面
1. 删除无用资源通过lint或resource shinking等删除无用资源
2. 压缩图片
1)无透明度的png转成jpg
2)通过tinypng, tinyjpg等进行有损压缩,或通过ImageOptim进行无损压缩
3)在不影响质量的提前下将大图转换成webp
3. 压缩动画
压缩loading等gif动画,及其它较大的资源,如mp3
4. 动态加载
对动态表情等特定业务场景才使用的动画等资源做动态加载,app启动后在线下载,不随apk发包。
5. 使用微信资源压缩方案
方案见 https://github.com/shwenzhang/AndResGuard
代码方面
1. 开启proguardproguard不仅能够混淆,而且能够优化代码,可以大大减小dex文件的大小。
但需要对被反射引用的类需要做好keep
2. 动态加载
对ocr(身份证识别)等较大的库做动态加载,app启动后在线下载,不随apk发包。
3. 插件化
将相对独立的业务做成插件,app启动后在线下载,不随apk发包。
4. 删除非必要的so库
很多app为了支持x86,apk至少包含arm和x86 2个ABI,甚至包括arm其实x86构架的手机也支持arm,可以删除x86 so,只保留arm。
有人认为x86手机以兼容模式运行arm so会影响效率,其实效率上的影响对用户并没有直接的感知。
删除x86 so可以大大减少apk size,特别是app集成了很多第三方so库的情况下,如fresco,rn等。
关于so的介绍详见Android
动态链接库加载原理及 HotFix 方案介绍
5. Facebook字节码优化方案redex
方案见 https://github.com/facebook/redex
相关文章推荐
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- Zipalign——Android apk优化工具
- Android APK优化工具Zipalign详解
- Android5.1--APK包的安装、卸载和优化(PackageManagerService)(三)
- Android插件化开发 第二篇 [动态加载apk优化]
- Android5.1--APK包的安装、卸载和优化(PackageManagerService)
- Android中,Dalvik检查和优化.apk/.jar的流程introduce
- 新版Android源码用mmm编译 apk 优化,导致Failure [INSTALL_FAILED_DEXOPT]问题的解决办法
- android apk使用zipalign进行简单优化
- Android APK安装包瘦身-------优化apk
- Android apk大小优化之自我实践
- (转)Zipalign——Android apk优化工具
- 使用Zipalign优化Android apk应用程序
- Android APK优化工具Zipalign详解
- Android5.1--APK包的安装、卸载和优化(PackageManagerService)(一)
- Android ProGuard压缩,优化,混淆使用
- 通过signapk.jar 为Android 应用程序签名,并优化签名后的APK应用程序
- Android图片优化和APK优化
- Android APK优化工具Zipalign详解