news 2026/7/5 21:12:22

APK瘦身

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
APK瘦身

应用安装包过大会导致应用的安装、启动耗时增加,也会导致应用在使用时占用的内存大以及产生耗电问题。本文介绍应用安装包的结构,以及常用的包体积优化方法及原理。

1、APK组成结构

应用安装包就是APK,它是Android application package的缩写。它实际上是一个zip格式的压缩文件,包含应用运行所需的所有文件,如java类文件、资源文件、签名文件、so文件等。

我们解压缩一个.apk文件可以看到里面的内容。主要有如下几个目录和文件。

META-INT/:主要有包含CERT.SF、CERT.RSA以及MANIFEST.MF文件,这个目录主要提供apk签名相关信息。确保apk包是完整的,没有被篡改的。

assets/:资源文件目录,在应用程序中可以使用AssetManager检索和使用这个目录下的资源。

res/:资源目录,下面有drawable、xml、layout、color、mune等目录结构,将不同资源分开存放。

lib/:存放.so文件以及.jar、.aar文件。.so是跟底层库相关的,通常要区分编译平台分开存放,如armeabi-v7a、arm64-v8a、x86、x86_64。.jar和.aar是存放的java库文件。

resources.arsc:将res文件夹下所有XML文件中的内容进行整理编码,按照列表的形式记录在这个文件中。表项主要有ID、Name、Value几个。程序中可以方便的通过查表找到目标资源。

classes.dex:java编译后生成的字节码文件,它是在java文件编译生成的.class文件基础上,进一步使用dex工具进行编译得到的文件。这种文件是专门被Android虚拟机Dalvik/ART所识别是使用。

AndroidManifest.xml:Android应用的配置清单文件,主要列出应用的包名、版本、使用的权限、声明的窗口和服务等。

2、开启代码混淆与资源缩减

安装包中存在未使用的资源,会占用额外的空间,导致包体积增大。在build.gradle文件中通过设置minifyEnable true和shrinkResource true,分别开启代码混淆和资源缩减。在编译apk时,编译器会自动忽略没有使用的资源,避免将其打包进APK。

需要注意的是,启用资源缩减

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 21:10:26

SmartTube完整教程:3步在Android TV上安装无广告YouTube客户端

SmartTube完整教程:3步在Android TV上安装无广告YouTube客户端 【免费下载链接】SmartTube Browse media content with your own rules on Android TV 项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube SmartTube是一款专为Android TV设计的开…

作者头像 李华
网站建设 2026/7/5 21:10:16

STM32F405RG电源管理优化与TPS65263应用实践

1. 项目背景与核心需求在现代嵌入式系统设计中,电源管理模块往往是最容易被忽视却又至关重要的部分。我最近接手的一个工业控制器项目就遇到了典型问题:使用传统分立式降压芯片为STM32F405RG供电时,系统在电机启动瞬间频繁出现复位现象。经过…

作者头像 李华
网站建设 2026/7/5 21:07:17

深入理解docker-flask-example的Dockerfile:多阶段构建与最佳实践

深入理解docker-flask-example的Dockerfile:多阶段构建与最佳实践 【免费下载链接】docker-flask-example A production ready example Flask app thats using Docker and Docker Compose. 项目地址: https://gitcode.com/gh_mirrors/do/docker-flask-example …

作者头像 李华