一、开发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. session 存入数据库 php

     session 机制 1.php中session的生成机制 session是保存在服务器的,当我们在代码中调用session_start();时,PHP会同时往SESSION的存放目录(默认为/tm ...

  2. ES6笔记(一):ES6所改良的javascript“缺陷”

    块级作用域 ES5没有块级作用域,只有全局作用域和函数作用域,由于这一点,变量的作用域甚广,所以一进入函数就要马上将它创建出来.这就造成了所谓的变量提升. ES5的"变量提升"这一 ...

  3. Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序

    安装X Window yum groupinstall 'X Window System'

  4. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  5. bitnami redmine版本由2.3.1升级至3.2.2过程

    环境: 操作系统为ubuntu13.**版本,非长期支持版. 安装目录:/opt/redmine-2.3.1-0/ 所有者用户:root 安装过程: 1. 备份2.3.1数据库 sudo /opt/r ...

  6. 简历生成平台项目开发-STEP3第一次项目例会探讨

    时间:2016.7.13周三7点半 地点:图书馆 讨论主题:项目需求和功能分析.第一次任务分配 内容:按照之前的讨论,我们认为简历生成功能,不仅要适应学生求职的需求,更多的是要在格式和内容上满足HR的 ...

  7. Group by

    分组语句必须和聚合函数在一起使用, group by子句负责将数据分成逻辑组,聚合函数对每一组进行统计计算 group by 必须放到 select 语句后面,如果select语句中有where子句, ...

  8. Oracle ORA-07445 evaopn2()+128错误问题

    Oracle ORA-07445 evaopn2()+128错误问题 问题描述 Plsql developer执行一段sql报错: 经查alert log详细报错信息为: ORA-07445: exc ...

  9. Redis 与 数据库处理数据的两种模式

    Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Pyt ...

  10. Linux SVN 搭建(YUM)安装

    安装说明 系统环境:CentOS安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 Linux svn服务端配置 检查已安装版本 #检查是否安装了低版 ...