美文网首页iOS日常ios 参考部分iOS大法好
SDK系列-iOS FrameWork制作概述

SDK系列-iOS FrameWork制作概述

作者: 随偑侕荇 | 来源:发表于2017-09-19 01:20 被阅读125次

    SDK系列-iOS FrameWork制作概述
    SDK系列-FrameWork的制作(1)
    SDK系列-FrameWork的制作(2)
    在制作frameWork制作前期知识要点的准备和概述;

    i386 x86_64区别

    1、armv7,armv7s,arm64,i386,x86_64概念

    可阅读该作者文章:armv7,armv7s,arm64,i386,x86_64都是什么

    arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|
            iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)
    armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
    armv7: iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|
            iPad mini|iPod Touch 3G|iPod Touch4 
    
    i386是针对intel通用微处理器32位处理器
    x86_64是针对x86架构的64位处理器
    
    模拟器32位处理器测试需要i386架构,
    模拟器64位处理器测试需要x86_64架构,
    真机32位处理器需要armv7,或者armv7s架构,
    真机64位处理器需要arm64架构。
    

    2、-ObjC -all_load -force_load 区别

    可阅读该作者文章:关于Xcode上的Other linker flags

    -ObjC:加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载
    到最后的可执行文件中
    
    -all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要
    随便使用这个参数!假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你
    很有可能会遇到ld: duplicate symbol错误,因为不同的库文件里面可能会有相同的
    目标文件,所以建议在遇到-ObjC失效的情况下使用-force_load参数。
    -force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定
    要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其
    余库文件的按需加载
    

    查看.a .frameWork的结构

    查看库包含的架构信息:
    lipo -info xxxxx.a

    合并多个架构:

    ../xxxx.a```
    ``` lipo -create ../xxxx.framework/xxxx ../xxxx.framework/xxxx -output ../xxxx```
    
    拆分库:
    ```lipo 待拆分的fat库 -thin 需拆分框架 -output 新库```
    
    编译的原理
    
    参考资料:
    
    [iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a](http://blog.csdn.net/lizhongfu2013/article/details/42387311)

    相关文章

      网友评论

        本文标题:SDK系列-iOS FrameWork制作概述

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