App的安装包(IPA)主要由可执行文件,资源组成
资源(图片,音频,视屏等)
- 采取无损压缩
- 去除没有用到的资源:https://github.com/tinymind/LSUnusedResources
可执行文件瘦身
- 编译器的优化
Strip Linked Product, Make Strings Read-Only, Symbols Hidden by Default这些选项设置为YES,默认这些选项设置都是YES,如果是比较旧的项目可能是NO
去掉异常支持
Enable C++ Exceptions, Enalbe Objective-C Exceptions 设置为NO
Other C Flags 添加-fno-exceptions
利用AppCode(https://www.jetbrains.com/objc/)检测未使用的代码: 菜单栏-> Code-> Inspect Code
Link Map
生成Link Map文件,可以查看可执行文件的具体组成
如下图,修改Write Link Map File 为YES,修改写入地址为我电脑的桌面
/Users/lidongxi/Desktop/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt

然后可以使用subline查看,
如果项目比较大,那么查看比较麻烦,借助第三方工具解析Link Map文件,比较方便 http://github.com/huanxsd/LinkMap
运行这个mac项目,选取生成的Llink Map文件 示例:
33.14K ZKIDCardCameraController.o
10.70K ZKIDCardFloatingView.o
8.49K AppDelegate.o
8.36K UIImage+Rotate.o
4.72K ViewController.o
0.54K CoreGraphics.tbd
0.35K 身份证拍照截取.app-Simulated.xcent
0.33K libobjc.tbd
0.31K Person.o
0.26K linker synthesized
0.19K main.o
0.19K UIKit.tbd
0.09K libSystem.tbd
0.05K Foundation.tbd