关于ios的ipa包的分析之link map 文件的分析
2016-01-05 14:42
483 查看
iOS项目的迭代的越久,项目的垃圾也就越多,我们通过link map文件可以直观的看到那些文件占用的包的大小。
这是我分析之后的文件,可以直观的看出那些东西占用了多少的内存。
XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes,并指定好linkMap的存储位置
编译之后,然后你会得到link map.txt(如何找到这个文件我就不说了)
这样看着太繁琐了,
这样就可以统计自己的每个模块的大小了。
这是我分析之后的文件,可以直观的看出那些东西占用了多少的内存。
1、首先你要知道link map文件在哪儿找到。
在xcode中设置编译选项Write Link Map FileXCode -> 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点击打开链接这样就可以统计自己的每个模块的大小了。
相关文章推荐
- 苹果发布证书
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
- iOS下JS与原生OC互相调用
- iOS 开发之照片框架详解
- ios imageWithContentsOfFile:path 图片不显示
- CGContextRef用法
- iOS运用fabric记录crash日志过程
- iOS 获得图片的时间(通过拍照和取出)
- iOS中实现tableView的中英文排序索引
- iOS 两种易混淆的存储路径
- ios创建横屏启动页
- iOS- 详解文本属性Attributes
- iOS 开发与安卓平台共通 实现录音文件的录制,上传,下载,播放
- iOS本地推送(本地通知)
- ios 画圆环进度条
- iOS中属性与成员变量的区别
- iOS开发RunTime之函数调用
- iOS开发之计算文件大小
- iOS开发学习笔记(零)
- iOS 7的手势滑动返回功能