iOS SDK开发命令

在SDK开发或使用过程中,我们可能会遇到下面的问题:

1. 怎么判断这个framework里面的库是静态库还是动态库?
2. 使用的framework怎么判断是否含有arm64架构?
3. 模拟器上使用framework链接错误跑不起来怎么办?
......

这些问题其实都可以通过mac的终端指令来解决,其实终端指令就是系统提供的一些工具软件,下面主要列举出常用的几个: lipo、otool、file

file

file是最简单的指令,可以显示文件类型,用于framework中的库时可以判断是静态库还是动态库,从下图file指令两个实例,可以看出
动态库: 显示“Mach-O 64-bit dynamically linked shared library arm64”
静态库: 显示“current ar archive random library” 或“current ar archive ”。

iOS SDK开发命令_第1张图片
file指令

lipo

lipo是最常用的指令,主要包含几个使用case:

  1. 查看库包含的架构信息
使用方式:lipo -info  /framework路径/xxx.framework/xxx
lipo
  1. 合并多个架构,如将模拟器库和真机armv7架构、真机arm64架构合并到一起。
使用方式:lipo -create 库1 库2 -output  合并后的fat库
  1. 拆分库,如将包含真机库和模拟器库的framework拆分为只含有真机库的framework。
使用方式:lipo 待拆分的fat库 -thin 需拆分框架 -output 新库

otool

otool是个强大(前面提到的两个命令只可以通过otool来解决)的工具,在日常开发中用在以下case:

  1. 查看库包含的架构信息
使用方式:otool -o /framework路径/xxx.framework/xxx
  1. 查看当前app或库所使用的iOS系统的动态库
使用方式:打开ipa文件找到可执行文件, 以微信的老版本6.0.1为例:
otool -L  /路径/weixin6.0.1/Payload/MicroMessenger.app/MicroMessenger 
微信使用的动态库
  1. 反编译
    反编译可以说是个逆向常用的比较黑的操作,还是以微信的ipa为例:
otool -tV /路径/weixin6.0.1/Payload/MicroMessenger.app/MicroMessenger 

注意:此命令将输出所有汇编代码,对于微信这种巨型app输出过程很长,做好心理准备,此处也不列出长篇幅的汇编代码。

你可能感兴趣的:(iOS SDK开发命令)