跳到主要内容

APK/IPA 体积优化

问题

App 包体积过大影响下载转化率,如何优化?

答案

优化方向

方向具体手段预期收益
资源优化压缩图片(WebP)、删除未使用资源30-50%
代码优化Strip 符号、开启 LTO、删除无用代码10-20%
Asset CatalogApp Thinning(按设备分发)20-30%
动态下发大资源放远端按需下载视场景
编译配置-Oz 优化级别5-10%

排查大文件

# 解压 IPA 查看各部分大小
unzip -o MyApp.ipa -d MyApp_extracted
find MyApp_extracted -type f -exec du -sh {} + | sort -rh | head -20

# LinkMap 分析
# Build Settings → Write Link Map File = YES
# 用工具分析各模块代码体积

图片优化

// 使用 Asset Catalog + PDF 矢量图
// Build Settings → Compress PNG Files = YES

// 大图使用 WebP
// pod 'SDWebImageWebPCoder'

App Thinning

  • Slicing:App Store 按设备分发对应架构和资源
  • Bitcode:Apple 服务端重新编译优化(已在 Xcode 14 废弃)
  • On-Demand Resources:大资源按需下载

常见面试问题

Q1: 如何找到 App 中未使用的资源?

答案:使用 FengNiao 或 LSUnusedResources 工具扫描。原理是搜索代码中引用的图片名字符串,和 Asset Catalog 中的图片名做差集。需要注意拼接的图片名(如 icon_\(index))会误报。

相关链接