MAUI APK 体积过大主因是冗余架构、未压缩图片、AOT 编译及全量资源;通过仅保留 arm64、转 WebP、禁用 AOT、启用资源收缩、精简语言字体,157MB 可降至 41MB 以下。

MAUI 打包的 APK 体积偏大,核心原因在于默认包含全部 CPU 架构、未压缩资源、冗余代码和未精简配置。针对性优化后,157MB 的 demo 可压至 41MB 以下,降幅超 70%。
只保留必要 CPU 架构
默认打包会同时嵌入 arm32、arm64、x86、x64 四套原生库,但当前主流 安卓 设备基本只用 arm64。精简后体积直接减少约一半:
- 在项目属性 → Android →“目标 ABI”中,仅勾选 arm64-v8a
- 勾选“每个所选 ABI 生成一个包(.apk)”——这样不会生成单个臃肿包,而是为 arm64 单独出一个 APK
- 若需上架 Google Play,后续可用 Android App Bundle(.aab)替代。apk,平台会自动分发适配机型的最小包
图像资源全面转 WebP
图片通常是 APK 里最占空间的部分。PNG/JPG 转 WebP 可在视觉无损前提下平均压缩 60%:
- 将 Platforms/Android/Resources/drawable 下所有图片批量转为 WebP 格式(推荐使用 ImageOptim 或命令行 cwebp)
- 确保 drawable-xxxhdpi 等密度文件夹中的图也一并转换,避免高密度图被忽略
- 不建议保留多套分辨率图片;如用户设备集中在 xxhdpi 以上,可删掉 mdpi、hdpi 等低密度文件夹
关闭 AOT 编译 + 启用资源压缩
AOT(提前编译)虽提升启动速度,但会让 APK 增大数 MB 且不可逆。发布调试版或对性能要求不高的场景可禁用:
- 在 csproj 文件的
<propertygroup></propertygroup>中添加:true partial false - 启用资源收缩(shrinkResources):在 Android 项目属性中开启“移除未使用的资源”,或手动在
AndroidManifest.xml对应位置确认权限与组件引用完整,避免误删导致崩溃 - 注意:启用资源收缩前务必做全路径功能测试,尤其涉及动态加载资源的逻辑
精简语言与字体资源
MAUI 默认打包支持全部语言字符串和完整字体集,实际项目往往只需中英文: