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

如何在指定限制条件下减小64位APK中.so库的体积?

64位APK体积增量优化方案

以下方案均不涉及修改android:extractNativeLibs配置,符合要求:

  • 拆分ABI分发
    主流应用商店均支持按架构单独上传、分发对应ABI的APK包,终端用户仅会下载匹配自身设备架构的安装包,不会同时携带多架构的.so文件。build.gradle配置示例:
    android {
        splits {
            abi {
                enable true
                reset()
                include 'armeabi-v7a', 'arm64-v8a' // 按需设置需要支持的架构
                universalApk false // 关闭全架构通用包生成
            }
        }
    }
    
  • 裁剪冗余架构的.so文件
    检查是否有第三方依赖默认引入了未指定的其他架构.so,可通过abiFilters强制只保留目标架构的文件,64位包配置示例:
    android {
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a'
            }
        }
    }
    
  • 优化.so库本身体积
    针对自研的native代码,可通过编译选项压缩体积:
    • 开启-Os编译参数,优先优化代码体积
    • 开启-fvisibility=hidden隐藏多余符号表
    • 使用strip命令剔除.so文件中的调试符号,gradle默认会对打包的.so执行strip操作,若第三方提供的.so未处理可手动执行strip
  • 裁剪冗余资源
    检查64位打包是否引入了额外的冗余资源,可通过resConfigs仅保留需要的语言、dpi等资源,示例:
    android {
        defaultConfig {
            resConfigs "zh", "zh-rCN", "xxhdpi" // 按需调整保留的资源范围
        }
    }
    
  • 优化第三方依赖
    对比32位、64位包的文件差异,排查是否存在第三方依赖的64位.so体积远大于32位的情况,可替换为更轻量的同功能依赖,或仅引入依赖的必要功能模块,避免引入全量SDK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:15:06