Android 打包Apk太大 如何进行压缩APK文件

本文分享了将120M的APK文件通过优化三方框架包、资源文件、SO库架构、代码压缩及混淆等手段,成功减小至70M的实战经验。详细介绍了如何设置SO库支持架构、利用ProGuard进行代码压缩与混淆,以及采用网络路径更新图片资源的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题困扰了很久 一个项目代码量没多少 但是编译的APK文件却很大,有甚者超过了100M 除却很多图片资源 我还是一步一步的尝试了下各种方法 果然 一个120M的APK缩减到了70M 那我们就一步一步分析下

我们的一个完整项目包括以下几个模块:

assets/:包含应用可以使用AssetManager对象检索的应用资源。

res/:包含未编译到的资源 resources.arsc。

lib/:包含特定于处理器软件层的编译代码。

resources.arsc:包含已编译的资源。

classes.dex:包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。

AndroidManifest.xml:包含核心Android清单文件。

我们都知道 我们的三方框架包 和资源文件都放在了 lib,res, 的下面 所以我们主要针对这里做操作

   ndk {
            //设置支持的SO库架构
            //abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'       //, 'x86', 'x86_64', 'arm64-v8a'
            abiFilters 'armeabi-v7a'
        }

我们一般支持so库的时候 有的时候认为支持越多是越好的 其实不是 其实大多编译库 我们只需要支持’armeabi-v7a’或者armeabi就可以了,因为过度的便一支持会重复编译增加空间 座椅这里可以优化下

好的下一步


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

shrinkResources:移除未引用资源,和代码压缩协同工作。

minifyEnabled:ProGuard启用代码压缩,配合proguardFiles的配置对代码进行混淆并移除未使用的代码。

代码混淆在压缩apk的同时,也提升了安全性。

最后一个 我们的图片资源 网络环境支持的话 可以全部引用网络路径 更新维护也比较方便 减少本地内存

好的基本就这样了

### 减小 UniApp 打包生成 APK 文件大小的方法 #### 1. 使用 Tree Shaking 和 Code Splitting 技术 通过 Webpack 的 Tree Shaking 功能可以移除未使用的代码,减少最终打包文件的体积。Code Splitting 可以按需加载模块,进一步降低初始加载量。 ```javascript // vue.config.js 中启用 tree shaking 和 code splitting 配置 module.exports = { chainWebpack: config => { config.optimization.splitChunks({ chunks: 'all' }); } }; ``` #### 2. 移除不必要的依赖项和资源文件 检查 `package.json` 文件中的 dependencies 字段,删除不再使用的 npm 包。清理项目内的图片、音频等静态资源,只保留必要的素材[^2]。 #### 3. 压缩混淆 JavaScript 和 CSS 资源 利用 UglifyJS 或 Terser 插件压缩 JavaScript 文件;采用 cssnano 工具精简 CSS 样式表。这些工具能够有效去除空白符、缩短变量名称从而缩减文件尺寸。 #### 4. 启用 Gzip/Br 压缩算法 服务器端开启 gzip 或 brotli 压缩协议,在传输过程中对响应体进行高压缩率编码处理,加快页面加载速度的同时间接减少了 apk 安装包的整体容量。 #### 5. 图片优化与矢量化转换 对于图标类的小图建议转为 SVG 格式存储,既保持清晰度又大幅削减字节数。大尺寸照片则可通过 ImageMagick 等软件批量调整分辨率并应用有损压缩策略来控制质量损失范围内的最小化占用空间。 #### 6. 开启 V8 编译缓存机制 V8 编译器会在编译期间创建中间表示形式(IR), 并将其序列化保存下来供下次启动时重用,这有助于加速应用程序冷启动过程同时也降低了 js bundle size. ```json { "v8cache": true, } ``` #### 7. 自定义构建命令参数 在执行 build 操作前设置一些针对性更强的环境变量或 CLI 参数,比如关闭 source map 生产模式下不需要的功能特性: ```bash UNI_APP_SOURCE_MAP=false npx dcloud hbuilderx -b release android --no-minify-js-css ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值