一、开发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一起提供,就可以使用了。

iOS XCode7制作.Framework动态库和.a静态库的总结的更多相关文章

  1. iOS,Xcode7 制作Framework,含资源和界面

    Xcode7 制作Framework  本文通过Demo方式介绍1)将含bundle和存代码编写界面打包进framework:2)将storyboard +assets.xcassets打包. (一) ...

  2. Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]

    以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...

  3. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明

    本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...

  4. centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标前所有字符 Ctrl+r 搜索命 hash命令 Ctrl+左箭头/右箭头 cd命令 第三节课

    centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标 ...

  5. iOS 静态库和动态库的区别&静态库的生成

    linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函 ...

  6. [转] iOS开发之使用lipo命令制作模拟器与真机通用静态库

    转自 http://blog.csdn.net/jinglijun/article/details/8276089 通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac ...

  7. iOS开发--使用lipo命令制作模拟器与真机通用静态库

    通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有 ...

  8. 制作dlib(面部识别检测)静态库

    参考或引用网址: 快速精准的人头检测,代码已开源http://url.cn/5e3qQPN http://www.jianshu.com/p/701e8dea887e 官网文档 GitHub地址 1. ...

  9. Linux下动态库(.so)和静态库(.a) 的区别

    静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.编译之后程序文件大,但加载快,隔离性也好.动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还 ...

随机推荐

  1. SharePoint文档库文件夹特殊字符转义

    当我们在SharePoint网站文档库中新建文件夹时包含了~ " # % & * : < > ? / \ { | }字符时(一共15个), 或者以.开头或者结束,或者包含 ...

  2. MyEclipse 2016正式版更新内容

    MyEclipse 2016 Stable 1.0正式发布!在保留之前CI系列的工具之外,又新增了许多非常棒的新功能.正式版下载地址 Eclipse Mars MyEclipse 2016基于Ecli ...

  3. SegmentControl 那些令人烦恼的事儿

    每个人的曾经都很苦逼.我知道我很卑微,但我不曾放慢脚步,在这条路上至死不悔.愿与你同行. UISegmentControl 概述 UISegmentControl 是系统的段选择控件,具有简洁大方的外 ...

  4. javascript 设置input框只读属性 获取disabled后的值并传给后台

    input只读属性   有两种方式可以实现input的只读效果:disabled 和 readonly. 自然两种出来的效果都是只能读取不能编辑,可是两者有很大不同. Disabled说明该input ...

  5. SQL Server 2008 R2:快速清除日志文件的方法

    本例,快速清理“students”数据库的日志,清理后日志文件不足1M. USE [master] GO ALTER DATABASE students SET RECOVERY SIMPLE WIT ...

  6. x01.CodeBuilder: 生成代码框架

    根据 Assembly 生成代码框架. 这是学习 AvalonEdit 的一个副产品.学习时,照着源代码新建文件夹,新建文件,添加方法与属性,虽然只是个框架,也要花费大量时间.为什么不让它自动生成呢? ...

  7. BZOJ 3172: [Tjoi2013]单词 [AC自动机 Fail树]

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3198  Solved: 1532[Submit][Status ...

  8. MonoBehaviour Lifecycle(生命周期/脚本执行顺序)

    脚本执行顺序 前言 搭建一个示例来验证Unity脚本的执行顺序,大概测试以下部分: 物理方面(Physics) 渲染(Scene rendering) 输入事件(InputEvent) 流程图 Uni ...

  9. python下print结果到文件中的方法

    目的是将print的结果输出到一个文件中,比如这个文件在D:\lianxi\out.txt下,我用的windows: s = '1234' f = open (r'D:\lianxi\out.txt' ...

  10. 做了一个sublime text插件

    做了一个sublime text插件,可以方便地查看C++/python的调用图.插件的演示视频在这里: http://list.youku.com/albumlist/show?id=2820226 ...