由于公司项目由原生转为了混合开发,但是APP 的 release包 生成ipa ,有 80M 之大,
实际上,应用原生的部分已经很小了,但是项目中还存在着 很多原生的控制器,viewmodel 等类所以决定对现有app 进行瘦身
1.审视APP哪些东西很导致ipa 包很大
将ipa 包解压,发现,除了打包生成的二进制,和资源文件外,有两个文件最大;
那么主要针对不用的图片文件 和 打包后的资源文件处理,尽量减少不用的代码的引用也能减小ipa 的包的大小;
2.瘦身结果
3.瘦身思路
- 1.删除不需要的资源文件
- 2.删除废除的第三方SDK
- 3.对于低版本的RAM 不再支持
4.瘦身工具
- 工具1: synx --项目虚拟文件夹整理工具 下载链接https://github.com/venmo/synx
一个命令行工具,重组您的Xcode项目文件夹以匹配您的Xcode工程,把你project 里虚拟目录分隔成真实的文件夹,
- 工具2 :LSUnusedResources--[ 项目资源文件清理工具 ] ()下载链接 https://github.com/tinymind/LSUnusedResources
删除project 工程中不用的资源文件
ipa 解压后,除了资源文件还有一个比较大的 .car 文件,解压查看xcode 打包了哪些东西,是什么东西导致ipa 爆大;
5.瘦身过程
App 瘦身整理:
8月1号之前的 公司项目 (8月1日)
安装包大小 | size |
---|---|
5.4.4 版本ipa包 | 77.5M |
Universal | 97.9 MB |
iPhone 6s | 54.2 MB |
iPhone 6s Plus | 60.3 MB |
5.4.5 版本 瘦身后 (8月11日)
安装包大小 | size |
---|---|
5.4.4 版本ipa包 | 68.9 MB |
Universal | 80.8 MB |
iPhone 6s | 40.1 MB |
iPhone 6s Plus | 48.4 MB |
(测试通过)
平均安装包缩小了大约 15M ;
5.4.5 (223 版本-- 删除 ARMV7 ) (8月11日)
223 安装包大小 | size |
---|---|
5.4.4 版本ipa包 | 48.6 MB |
Universal | 62.2 MB |
iPhone 6s | 40.1 MB |
iPhone 6s Plus | 48.4 MB |
总结 223 版本因为删除了ARMV7 所以包小了很多,当我恢复支持ARMV6 ,且删除了引用的viewModel 和Controller 但是ipa 包反而变大了,所以,我猜测删除ARMV7 是有效的;
5.4.7 (240 版本-- 删除很多control 和viewmodel ) (8月11日)
224 安装包大小 | size |
---|---|
5.4.4 版本ipa包 | 54.7 MB |
Universal | 64.2 MB |
iPhone 6s | 31.7 MB |
iPhone 6s Plus | 39.8 MB |
总结 224(测试中)恢复删除的ARM7,ipa 变大了,但是单独的 各个iphone 的版本实际上还是缩小了一些;所以,ARM的支持越多,会导致生成的ipa 越大,但是相应各个iphone 的安装包实际变化不大
ARM了解
删除过时的 ARM 支持
首先来了解一下Architectures中几个参数的含义
指令集对应的机型:
2018 A12芯片arm64e : iphone XS、 iphone XS Max、 iphoneXR
2017 A11芯片arm64: iPhone 8, iPhone 8 Plus, and iPhone X
2016 A10芯片arm64:iPhone 7 , 7 Plus, iPad (2018)
2015 A9芯片arm64: iPhone 6S , 6S Plus
2014 A8芯片arm64: iPhone 6 , iPhone 6 Plus
2013 A7芯片arm64: iPhone 5S
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
模拟器32位处理器测试需要i386架构,
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构,
真机64位处理器需要arm64架构。
友情链接:
参考了这几个哥们的文章和瘦身记录;
iOS学习之解压Assets.car;
缩小 ipa包 压缩 ipa iOS 如何缩小打包项目ipa大小;
当我们谈论iOS瘦身的时候,我们到底在谈论些什么;