没有合适的资源?快使用搜索试试~ 我知道了~
首页APK体积优化(附Android Studio操作指引)
目录 1. 压缩APK体积的意义 2. APK的构成与打包 3. res资源的压缩和优化 3.1 删除没有被引用的资源 3.2 使用WebP压缩图片 3.3 使用TinyPNG压缩图片 4. 删除多余的代码(未被引用的类/方法/变量) 4.1 代码混淆 4.2 利用Lint查找无用代码 5. Zip格式优化 6. classes.dex优化 7. lib优化 8. 参考资料 1. 压缩APK体积的意义 随着项目的不断迭代,功能越来越多,构建出来的apk文件的大小也会越来越大,这样会导致在移动网络情况下下载时,使用的网络流量会增大,并且apk太大,导致下载的时间也增加,虽然当前每个人的手机的流
资源详情
资源评论
资源推荐

APK体积优化(附体积优化(附Android Studio操作指引)操作指引)
目录目录
1. 压缩APK体积的意义
2. APK的构成与打包
3. res资源的压缩和优化
3.1 删除没有被引用的资源
3.2 使用WebP压缩图片
3.3 使用TinyPNG压缩图片
4. 删除多余的代码(未被引用的类/方法/变量)
4.1 代码混淆
4.2 利用Lint查找无用代码
5. Zip格式优化
6. classes.dex优化
7. lib优化
8. 参考资料
1. 压缩压缩APK体积的意义体积的意义
随着项目的不断迭代,功能越来越多,构建出来的apk文件的大小也会越来越大,这样会导致在移动网络情况下下载时,使用的网络流量会增大,并且apk太大,导致下载的时间也增
加,虽然当前每个人的手机的流量都很多,对用户流量影响不大,但是据一些网站统计,安装包越大,用户的转化率是在降低的,所以减少apk的体积,可以让更多的用户愿意去下
载和体验产品;[1] 压缩APK体积还有个很重要的意义在于节省手机的内存空间以及存储空间,APK体积压缩之后,运行APP时的资源加载少了,占用的手机内存也会变少,整体运行
更为流畅;
对于一些功能比较丰富的软件可能内部采用了多插件的架构,而这些插件可能也是由一个个独立APK组成,那么在用户下载软件后第一次使用插件对应的功能时,也就是冷启动的时
候,APK太大就会带来加载过慢的问题,会严重影响用户体验。
2. APK的构成与打包的构成与打包
这里拿自己的一个Demo编译生成的release版本的APK作为例子,来看看一个APK里面到底装了什么:
这里详细介绍一下APK里面的组成:[2]
lib::存放so文件,可能会有armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips,大多数情况下只需要支持armabi与x86的架构即可,如果非必需,可以考虑拿掉x86的部
分;
res::存放编译后的资源文件,例如:drawable、layout等等;
assets::应用程序的资源,应用程序可以使用AssetManager来检索该资源;
META-INF::该文件夹一般存放于已经签名的APK中,它包含了APK中所有文件的签名摘要等信息;
kotlin::这些文件包含用于声明标准(“内置”)Kotlin类的数据,这些类未编译为.class文件,而是映射到平台上的现有类型(在本例中为JVM)。例如,kotlin / kotlin.kotlin_builtins包
含kotlin包中的非物理类的信息:Int,String,Enum,Annotation,Collection等;
classes(n).dex::classes文件是Java Class,被DEX编译后可供Dalvik/ART虚拟机所理解的文件格式;
resources.arsc::编译后的二进制资源文件;
AndroidManifest.xml::Android的清单文件,格式为AXML,用于描述应用程序的名称、版本、所需权限、注册的四大组件。
这里补充一下App资源被打包进APK的过程,Android构建工具链使用AAPT工具来对资源进行处理,来看下图:



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0