您的位置:首页 > 移动开发 > IOS开发

关于ios的ipa包的分析之link map 文件的分析

2016-01-05 14:42 483 查看
iOS项目的迭代的越久,项目的垃圾也就越多,我们通过link map文件可以直观的看到那些文件占用的包的大小。

这是我分析之后的文件,可以直观的看出那些东西占用了多少的内存。



1、首先你要知道link map文件在哪儿找到。

在xcode中设置编译选项Write Link Map File

XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes,并指定好linkMap的存储位置



编译之后,然后你会得到link map.txt(如何找到这个文件我就不说了)



2、解析你的linkmap.txt文件

通过正则表达式([+|-][.+\s(.+)]),我们可以提取当前可执行文件里所有objc类方法和实例方法(SelectorsAll)。再使用otool命令otool -v -s __DATA __objc_selrefs逆向__DATA.__objc_selrefs段,提取可执行文件里引用到的方法名(UsedSelectorsAll),我们可以大致分析出SelectorsAll里哪些方法是没有被引用的(SelectorsAll-UsedSelectorsAll)。注意,系统API的Protocol可能被列入无用方法名单里,如UITableViewDelegate的方法,我们只需要对这些Protocol里的方法加入白名单过滤即可。

这样看着太繁琐了,

我自己写了一个小的mac的运行程序方便得到分析之后的文件

代码地址:https://github.com/WMSmile/WMLinkMapAnalyzer点击打开链接



这样就可以统计自己的每个模块的大小了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: