一、开发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. composer 出现 configuration does not allow connection to http.......

    出现这样的问题是,镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了. 我们来个全局设置的方法: composer config -g secure-http false ...

  2. JDBC数据库访问操作的动态监测 之 Log4JDBC

    log4jdbc是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息.log4jdbc使用SLF4J(Simple Logging Facade)作为日志系统. 特性: 1.支持JDBC3和 ...

  3. UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning

    #import "ModelAnimationDelegate.h" #import <UIKit/UIKit.h> #import "MapVC.h&quo ...

  4. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  5. UITableview delegate dataSource调用探究

    UITableview是大家常用的UIKit组件之一,使用中我们最常遇到的就是对delegate和dataSource这两个委托的使用.我们大多数人可能知道当reloadData这个方法被调用时,de ...

  6. xUtils 3.0 post使用详解

    github:https://github.com/wyouflf/xUtils3 xUtils3简介 xUtils 包含了很多实用的android工具. xUtils 支持超大文件(超过2G)上传, ...

  7. 从Sql Server表中随机获取一些记录最简单的方法

    * FROM test ORDER BY NewID() 注意,使用时,请将‘test’改为真实的表名.

  8. SQL Server读写分离实现方案简介

    读写分离是中型规模应用的数据库系统常见设计方案,通过将数据从主服务器同步到其他从服务器,提供非实时的查询功能,扩展性能并提高并发性. 数据库的读写分离的好处如下: 通过将“读”操作和“写”操作分离到不 ...

  9. PHP中的数据库三、redis

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  10. 记录 git 常用的操作命令总结

    记录 git 常用的操作命令总结 2016-12-15 16:44:04 作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能.git 相较 SVN 而言,其优点不言而喻.git 的功能 ...