iOS App提交审核后,有时被拒是因为某个方法有问题,或者调用了某些私有API,有时使用私有API不是自己的业务代码而是其他第三方SDK所致,为了快速定位问题点,可以用命令strings和otool。
主要用法:
快速查找字符串
strings是可以查看任意文件的任意字符串,strings在文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件有用。
strings {file} | grep -i {keyword}
快速查找方法或类
otool: 针对目标文件的展示工具(object file displaying tool)。
使用otool可以对指定的目标文件(object file)或库文件中的特定部分以特定的形式展现出来。otool能够理解Mach-O格式和任何通用文件格式。
依赖库查询
otool -L {file}
可以看到应用运行所需要的系统库,这样依赖了哪些系统库,版本号分别是多少一目了然。
汇编码
查看依赖系统库仅仅是其中的一小功能。otool命令配上不同的参数可以发挥很强大的功用。(慎用,耗CPU)
otool -tV {file}
则整个ARM的汇编码就都显示出来了,能看到ARM的汇编码。
Mach-O headers
otool -h {file}
类的继承结构和引用关系
otool -ov {file}
可以根据结构来分析调用关系和继承关系。
Class Dump
使用class-dump-xx.dmg 链接:http://stevenygard.com/projects/class-dump/