iOS SDK开发命令

作者: 杭研融合通信iOS | 来源:发表于2017-02-13 11:23 被阅读322次

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

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

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

    file

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

    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开发命令

        本文链接:https://www.haomeiwen.com/subject/enpzittx.html