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一起提供,就可以使用了。
iOS XCode7制作.Framework动态库和.a静态库的总结的更多相关文章
- iOS,Xcode7 制作Framework,含资源和界面
Xcode7 制作Framework 本文通过Demo方式介绍1)将含bundle和存代码编写界面打包进framework:2)将storyboard +assets.xcassets打包. (一) ...
- Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]
以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...
- Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...
- 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 删除光标 ...
- iOS 静态库和动态库的区别&静态库的生成
linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函 ...
- [转] iOS开发之使用lipo命令制作模拟器与真机通用静态库
转自 http://blog.csdn.net/jinglijun/article/details/8276089 通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac ...
- iOS开发--使用lipo命令制作模拟器与真机通用静态库
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有 ...
- 制作dlib(面部识别检测)静态库
参考或引用网址: 快速精准的人头检测,代码已开源http://url.cn/5e3qQPN http://www.jianshu.com/p/701e8dea887e 官网文档 GitHub地址 1. ...
- Linux下动态库(.so)和静态库(.a) 的区别
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.编译之后程序文件大,但加载快,隔离性也好.动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还 ...
随机推荐
- 对于System.exit(0)和System.exit(1)的一般理解
public static void exit(int status) 终止当前正在运行的 Java 虚拟机.参数用作状态码:根据惯例,非 0 的状态码表示异常终止. 该方法调用 Runtime 类中 ...
- 10分钟写一个markdown编辑器
marked.js Marked是一个Markdown解析引擎. vue.js Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vu ...
- 商业智能BI推动制造业智能化转型
制造业是我国国民经济的支柱产业,是我国经济增长的主导部门和经济转型的基础,如今我国制造业面临技术工艺不精.缺乏市场意识.商贸流通环节多.物流成本大.仓储效率低下等问题,正处在转型的特殊时期. 内忧: ...
- 使用WebRTC搭建前端视频聊天室——数据通道篇
本文翻译自WebRTC data channels 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成 ...
- A星寻路算法介绍
你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢? 如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它! 在网上已经有很多篇关于A星寻路算法 ...
- yii2中如何使用modal弹窗之基本使用
作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...
- Atitit.web ui 组件化 vs mvc
Atitit.web ui 组件化 vs mvc 组件化 与 mvc并不矛盾..单双方适用的地方有所不同.. React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定 ...
- CSS实现内容超过长度后以省略号显示
样式: {width: 160px; overflow: hidden; text-overflow:ellipsis; white-space: nowrap;} 说明: white-space: ...
- 一道关于java序列化的问题,看大家知多少————
问题先放在这里,稍后我会做出解答 已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类) 类Test public class Test imple ...
- 前端HTML之页面结构
前端工作一年了,期间由于工作需要,也做了一些产品的设计,因为自己的目标就是做编程,所以婉拒了与产品相关的一些任务,打算主要把精力放到编程这方面. PS:2015年1月进军编程行业. 废话不多讲,这一年 ...