You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android APK体积异常偏大,如何定位原因并缩减安装包大小?

问题描述

构建生成的release版APK体积高达20.009MB,体积异常偏大。

我基于Android Studio的项目模板开发了一款功能极简的Android应用,核心功能仅为条码扫描。

项目依赖配置

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'com.google.mlkit:barcode-scanning:17.0.2'

    def camerax_version = "1.1.0-beta01"

    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:${camerax_version}"

    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.navigation:navigation-fragment:2.4.2'
    implementation 'androidx.navigation:navigation-ui:2.4.2'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

release构建配置

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

从依赖配置可见,我引入了ML Kit条码扫描库,根据官方文档说明,该库带来的体积增量不应超过3.2MB。我运行了size-analyzer工具进行体积分析,工具返回结果为:

No size saving suggestions found.

我已开启minifyEnabled代码混淆、shrinkResources资源压缩配置,但APK体积仍然过大,且体积分析工具未给出任何优化建议,咨询该问题的产生原因,以及有效缩减APK体积的方案。

原因分析与解决方案

核心原因

你当前构建的是包含全CPU架构native库的通用APK(Fat APK)。ML Kit条码扫描库、CameraX组件都携带了适配arm64-v8a、armeabi-v7a、x86、x86_64四种CPU架构的so本地库,官方标注的3.2MB增量是单架构下的体积,四种架构打包总和会直接涨到12MB以上,叠加AndroidX、Material组件的基础体积,就会达到20MB左右。

size-analyzer没有给出优化建议属于正常情况,该工具默认仅检测代码混淆、冗余资源、无用依赖类问题,多架构native库打包属于分发层配置,不在其默认检测规则范围内。

可落地的缩减方案

  • 配置ABI架构过滤,剔除不必要的架构so文件
    在模块级build.gradle的android.defaultConfig块中添加如下配置,仅保留覆盖绝大多数民用设备的CPU架构:
    ndk {
        // 两个架构覆盖99%以上在售安卓设备,剔除x86、x86_64架构的冗余so
        abiFilters 'arm64-v8a', 'armeabi-v7a'
    }
    
    如果不需要兼容2018年之前发布的32位安卓设备,可仅保留arm64-v8a单架构,体积还能再缩减30%左右,改完后重新打包APK体积会直接降到6-8MB区间,符合官方标注的增量范围。
  • 优先使用AAB(Android App Bundle)格式分发
    国内外主流应用市场均已支持AAB格式分发,上传AAB包后,市场会根据用户设备的CPU架构、屏幕密度、系统语言自动下发对应资源,不需要手动过滤ABI,用户实际下载的安装包体积比通用APK小40%-60%,是官方推荐的分发方式。
  • 按需选择ML Kit条码扫描的依赖版本
    如果你的应用仅在预装GMS服务的地区分发,可以将ML Kit条码扫描依赖替换为动态下载版,识别模型不会打包进APK,而是在应用首次使用时从Google Play服务拉取,还能再减少3MB左右的体积;如果面向国内市场分发则不建议替换,国内设备普遍没有GMS环境,会导致扫描功能不可用。
  • 排查依赖引入方式
    确认所有调试、测试相关依赖均使用debugImplementation、testImplementation、androidTestImplementation引入,避免调试工具被打包进release版本,从你当前的依赖配置看这部分没有问题。

内容的提问来源于stack exchange,提问作者HelloWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:42:17