iOS 应用包(ipa)瘦身之LinkMap与LSUnusedResources的使用
ipa瘦身,我们主要从2个方面入手:
一、是工程中所有文件占用空间的大小; 发现异常文件,需要进行优化处理
二、是未使用图片的清理。
针对第一种情况,我们可以通过link Map 文件,可以看到所有文件的缩减情况,
查看link Map 文件的工具,可以通过这个的链接去找:github.com/huanxsd/Lin…
针对第二种情况,我们可以通过LSUnusedResources 这个工具来检测工程中未使用的图片。
LSUnusedResources 工具可以通过这个链接获得, github.com/tinymind/LS…
下面以图文的形式详细描述这2个工具的事情情况。
LinkMap 工具使用
何如获得LinkMap 文件?
使用方式:
1.在XCode中开启编译选项Write Link Map File XCode -> Project -> Build Settings ->把Write Link Map File选项设为yes,并指定好linkMap的存储位置 2.工程编译完成后,在编译目录里找到Link Map文件(txt类型) 默认的文件地址:~/Library/Developer/Xcode/DerivedData/XXX-xxxxxxxxxxxxx/Build/Intermediates/XXX.build/Debug-iphoneos/XXX.build/ 3.回到本应用,点击“选择文件”,打开Link Map文件 4.点击“开始”,解析Link Map文件 5.点击“输出文件”,得到解析后的Link Map文件 6. *输入目标文件的关键字(例如:libIM),然后点击“开始”。实现搜索功能 7. *勾选“分组解析”,然后点击“开始”。实现对不同库的目标文件进行分组复制代码
~/Library/Developer/Xcode/DerivedData/XCTG3-gvueobenusdvggfpombsqchnvkfe/Build/Intermediates.noindex/XCTG3.build/Debug-iphonesimulator/XCTG3.build
linkMap的文件地址
从GitHub上面下载下link Map这个工程,跑一起来,在Mac端得到如下可视化界面。可以把我们上面得到linkMap文件(.txt)复制一份到桌面上,再下面选择文件的时候,加进去
选择好文件后,点击开始,我们就可以看到工程中下面这些文件占了多少空间,下面的参数可以为我们提供代码优化思路与方向。
LSUnusedResources 工具使用
从GitHub上面下载下LSUnusedResources这个工程,跑一起来,在Mac端得到如下可视化界面。我们把将要检测的工程添加进去,搜索就可以了。这里还有其他的一些功能。可以根据读者自己的实际需要去再探索了。
这里需要特别提醒是:
下面未使用的图片是机器检测出来的,单不是完全可信赖的哈。最好自己再在这些图片中,进行一下二次筛选。因为我们会遇到一下几种情况,是不能检测出来的。
举两个例子: 第一种:一些被序列化的图片,在工程中很有可能是这样被引用的 UIImage*image=[UIImage imageNamed:[NSString stringWithFormat:@"TabImage_index%d.png",i]]; 如此这样会被检测为无用图片.
解决办法: 1.可以手动确认是否真是废弃切图. 2.勾选Ignore similar name 选项进行过滤
第二种:在工程的Assets.xcassets文件中直接修改了图片的名字,这样会导致图片本身的名字和在工程中引入的名字不一致,导致检测结果有误.