本文讲述了开发者如何通过分析和优化Android应用,从删除不必要的依赖如material库、调整build配置,到使用dex2jar、混淆等技术手段,将一个2.8MB的包压缩到853KB,详细展示了包体积缩小的过程和关键步骤。
摘要由CSDN通过智能技术生成
最近要开新项目,建了一个新工程,完事运行一下编个包,不看不知道,一看吓一跳,一个新工程,啥都没干,编出来的包由2.8MB。
作为一个技术研发,我感觉受到了很深的伤害,让我想起来了强壮狗和虚弱狗的表情包
不能忍啊,我一定要给它瘦身!
先看看包的各部分组成,拖进AndroidStudio里
dex文件比较大,我们就先从dex开始优化,用第dex2jar反编译一下dex
可以看到,除了我自己目录下的三个类之外,v4包下边只有寥寥数个类,占用空间不大。由于targetSDK版本比较高,没办法干掉AndroidX引用,其他的其实都可以优化掉,因为目前我并没有必须用到。
删除material
删除layout中的ConstraintLayout
删除build.gradle中的引用
删除style文件中的material的相关Theme 引用
再次打包,包大小变为1.3MB
可以看到dex文件、res和resource.arcs都有明显的减小
其实还可以通过混淆进一步减少包体积
增加完混淆之后,apk包体积变为853KB,嗯,感觉在可接收范围内了
AndroidStudio
-压缩
apk
1、概述2、打开压缩、混淆、优化功能3、R8的配置文件3.1 概述3.2 添加额外配置文件4、压缩代码4.1 概述4.2 自定义keep规则5、精化本地库5.1 概述5.2 支持本地代码crash分析6、压缩资源6.1 概述6.2 自定义需要保留的资源6.3 使能严格的相关检查6.4 删除无用的供选择的资源6.5 合并重复的资源7、混淆代码7.1 概述7.2 解析混淆代码后的栈信息8、代码优化9、分析解决使用R8的问题
注: 一下文中app压缩功能,均指And
APK
包
结构如下:
lib/:
包
含特定于处理器软件层的编译代码。该目录
包
含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,后面会讲到原因。
assets/:
包
含应用可以使用AssetManager对
前言:不啰嗦 ,直接先把总结方法贴出。然后重点说多渠道
打包
。
APK
瘦身
:
1、将项目资源中用到的大图进行压缩处理。 可以网上搜索在线图片压缩,好的压缩工具可以让图片仍然保持清晰不模糊。
2、清除项目中无用的资源文件。比如已经不被引用的图片\图标、shape控件背景文件、layout布局文件、class文件等。
3、如果应用在4.0版本以上,可以将图片转换webp格式。
4、另外
打包
时
Android
Studio
我装到了E盘,但是有很多数据还是在C盘,导致系统盘空间不足,做以下迁移:
1. 迁移
Android
SDK到其他盘
我的
Android
SDK装在了C盘,占用空间很大,可迁移出去后,然后修改环境变量
ANDROID
_HOME和
Android
Studio
中的配置即可。
迁移sdk
C:\Users\apollo\AppData\Local\
Android
\Sdk 迁移...
docker: Error response from daemon: failed to create task for container: failed to create shim task:
10932