zoukankan      html  css  js  c++  java
  • iOS XCode7制作.Framework动态库和.a静态库的总结

    一、开发SDK时的支持情况:

    OC语言制作动态库时,支持iOS8+;OC语言制作静态库,支持iOS7+。

    Swift语言制作动态库时,支持iOS8+;Swift不支持静态库

    对于SDK来说,支持情况非常重要。像我就是一开始就被坑了,我使用Swift开发动态库的方式提供SDK,所以只能支持到iOS8+。但这意味着所有使用我的SDK的客户的APP都必须到iOS8+,这就坑爹了。

    所以假如需要支持iOS7的话,只有使用OC语言开发.a静态库的一条路。

    二、第三方库的使用:

    原本SDK已经作为别人APP工程里的第三方了,假如SDK中需要引用AFNetworking类似的三方库。

    对于动态库:

    (1)外部引用:第三方库不打进去,放在外部,比如cocoapods的方式。别人编译的时候需要在他的环境里有该第三方依赖库。当提供给别人SDK的时候,你还需要给别人一个podfile。

    (2)内部:直接引入源码,由于swift含有命名空间,所以不会有冲突。

    对于静态库:

    1.静态库无法再包含其他的.a静态库。只能把源码放进去一起编译。

    2.静态库无法把第三方放在外部,否则就不叫“静态”了。只能打包进SDK内部,并修改类名,防止外部冲突。

    三、动态库开发:

    开发动态库时,只要通过创建工程时选择Cocoa Touch Framework就可以了,可以选择OC或Swift语言开发。

    新建完SDK工程后,再新建一个APP的工程作为demo,把之前的工程拖进来,并把sdk生成的product加入app工程的link library,通过工程组合的方式进行开发,调试非常方便

     1.

    2.

    3.

    开发动态库看似简单,但还是会遇到一些棘手的问题,比如OC开发SDK时,swift工程如何调用(或是Swift开发的动态库,让OC支持),资源文件找不到等,环境配置等。

    一些问题我都总结在这篇文章内

    http://www.cnblogs.com/rayshen/p/5330512.html

    四、静态库开发

    (1)开发静态库的简易过程:

    开发静态库时(只能用OC语言开发了),只要通过创建工程时选择Cocoa Touch Static Library

    和之前一样,我们最好再新建一个APP的工程做Demo,方便调试自己的SDK

     

    2.创建新的APP工程,并拖入静态库的SDK工程

    3.加入.a的索引

    (2)开发静态库时的资源管理:

    1.选择SDK的工程,点击target中的+,然后选择OSX,增加资源Bundle的target(这点真的非常傻逼,iOS居然没有建立Bundle的选项,笑了)

    2.修改Bundle的target为 iOS

    3.假如我们新建一个controller,带XIB的,选择bundle->build phases,加入xib,或者image等资源文件

    然后在新的APP工程中,把.h,.a,.bundle一起提供,就可以使用了。

  • 相关阅读:
    redis主从模式
    深入理解BigDecimal
    double使用BigDecimal进行计算出现精确度问题
    代理IP爬取和验证(快代理&西刺代理)
    Jsoup-简单爬取知乎推荐页面(附:get_agent())
    Jsoup-基础练习
    取数据超过内存限制的问题-解决方案(sample,takeSample,filter)
    说出你的故事:你为什么学爬虫
    hadoop第一次面到hr(品友互动)
    MapReduce本地运行模式wordcount实例(附:MapReduce原理简析)
  • 原文地址:https://www.cnblogs.com/rayshen/p/5613990.html
Copyright © 2011-2022 走看看