iOS 库文件制作
一、静态库和动态库的介绍
一、什么是库?
库是共享程序代码的方式,一般分为静态库和动态库。
二、静态库与动态库的区别?
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
三、iOS里静态库形式?
.a和.framework
四、iOS里动态库形式?
.dylib和.framework
五、framework为什么既是静态库又是动态库?
系统的.framework是动态库,我们自己建立的.framework是静态库。
六、a与.framework有什么区别?
.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
建议用.framework.
七、为什么要使用静态库?
方便共享代码,便于合理使用。
实现iOS程序的模块化。可以把固定的业务模块化成静态库。
和别人分享你的代码库,但不想让别人看到你代码的实现。
开发第三方sdk的需要。
PS:更为详细的解释可以参看我的另一篇文章http://www.cnblogs.com/wfwenchao/articles/5044475.html
二、制作使用静态库
IOS静态库a文件制作流程
1.新建Cocoa Touch Static Library工程
2.Xcode的参数设置
- "Build Active Architecture Only" 设置为"NO"
- "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7.0以上系统版本的编译
Build Active Architecture OnlyIOS Deployment TargetBuild Phases则使用默认设置
3.头文件添加接口
4.编译生成静态库.a文件
- 分别选择真机和Iphone6模拟器进行编译
- 首先找到真机编译成功生成的.a文件,Show In Finder
- 然后找到Iphone6模拟器编译成功生成的.a文件(在真机目录中command+(向上剪头键)返回上一层文件夹路径)
Show In Finder找到真机编译成功的.a文件分别为真机丶模拟器编译成功的.a文件
5.合成通用版的静态库.a文件
- 使用终端进行合成操作
lipo -create libStaticTest.a(真机.a文件路径) libStaticTest.a(Iphone6模拟器.a文件路径) -output 保存路径/StaticTest.a使用终端进行合成 - 合成的.a文件(支持IOS7以上系统丶真机以及模拟器)
合成的通用版静态库文件
6.测试自己制作的静态库文件
将.h以及合成的通用版.a文件导入测试工程中,实现.h提供的接口.
二、 Framework的制作流程
1.新建Framework项目
2.删除原有的.h文件,创建与工程同名的类
在新建类.h中添加接口,.m中添加实现代码
3.Xcode的参数设置
- "Architectures" 添加 "armv7s"
- "Build Active Architecture Only" 设置为 "NO"
- "Dead Code Stripping" 设置为 "NO"
- "Link With Standard Libraries" 设置为 "NO"
- "Mach-O Type" 设置为 "Static Library"
- "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7.0以上系统版本的编译
4.为Framework添加文件
- "Compile Sources" 添加封装进Framework的文件,即隐藏
- "Headers->Public" 添加暴露给用户查看的头文件
5.编译生成Framework文件
- 分别选择真机和Iphone6模拟器进行编译
- 首先找到真机编译成功生成的framework,Show In Finder
- 然后找到Iphone6模拟器编译成功生成的framework(在真机目录中command+(向上剪头键)返回上一层文件夹路径)
6.合成通用版的framework文件
- 需要合成的文件是FrameworkTest.framework包中的FrameworkTest文件
- 使用终端进行合成操作
lipo -create FramewrokTest.framework/FrameworkTest(真机framework路径) FramewrokTest.framework/FrameworkTest(Iphone6模拟器framework路径) -output 保存路径/FrameworkTest- 合成的文件如下图:
- 将合成的FrameworkTest文件替换掉真机或者模拟器路径中FrameworkTest.framework包中的FrameworkTest文件
iOS 库文件制作的更多相关文章
- iOS静态库.a文件制作和导入使用
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...
- 【转】IOS静态库a文件制作流程
原文网址:http://www.jianshu.com/p/3439598ea61f 1.新建Cocoa Touch Static Library工程 新建工程 2.Xcode的参数设置 " ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- 制作静态库文件(.a文件)
制作静态库文件(.a文件) 1.创建静态库工程: 在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static ...
- iOS静态库的制作与引用
[iOS静态库的制作与引用] 1.Configuring Exported Headers To configure which headers are exported to clients, se ...
- iOS 静态库的制作
按照公司的想法 要开发一款SDK,于是就抽空学习一下静态枯的制作过程. 在IOS中有静态库和动态库的区分,下面我们就来详细介绍一下. 一.静态库和动态库的详细介绍. 我们平时的工程中或多或少都要引入第 ...
- IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework
一.什么是库 库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库. 静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复 ...
- iOS开发之静态库的制作
当你需要和别人分享代码,但又不想让别人看到你内部的实现时就需要制作静态库,通常用于第三方SDK 下面就分享一下制作静态库(.a)的过程: 1.打开Xcode,新建workspace 2.随便给work ...
- 关于C语言中用Keil软件制作Lib库文件的几点经验
1.关于制止LIB库文件的几点经验 1. 一个工程如何生成lib文件: 2. 一个生成lib文件的工程可以调用这个工程中不存在的函数,只需要在.h文件中声明这些不存在函数的原型,然后在调用这个lib文 ...
随机推荐
- [磁盘管理与分区]——MBR破坏与修复
GURB的破坏和恢复(利用备份体恢复) (1)备份 # count= //对MBR中的引导程序部分作备份 (2)破坏MBR中的前446字节 # count= (3)恢复MBR中前446字节 ===&g ...
- AppDelegate中的方法解析
// 当应用程序启动完毕的时候就会调用(系统自动调用) -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOp ...
- cocos2dx中导演的职责有哪些?
1.一个游戏里面只有一个导演,因此采用了单例的设计模式,用getInstance方法来获得 2.游戏中导演负责openGL ES的初始化,场景的切换,游戏的暂停继续(相当于拍电影的ka),节点坐标与世 ...
- bzoj 3037 贪心
我们可以贪心的分析,每个点的入度如果是0,那么这个点不可能 被用来更新答案,那么我们每次找入度为0的点,将他去掉,如果他连的 点没有被更新过答案,那么更新答案,去掉该点,环的时候最后处理就行了 /** ...
- Leetcode#126 Word Ladder II
原题地址 既然是求最短路径,可以考虑动归或广搜.这道题对字典直接进行动归是不现实的,因为字典里的单词非常多.只能选择广搜了. 思路也非常直观,从start或end开始,不断加入所有可到达的单词,直到最 ...
- 0910 noip模拟
教师节快乐: T1:勇士闯魔塔,是一道很裸的莫队题目,但在老师的催促下,出题人@syq同学修改了第一题,使之成了一道送分题,全暴力水过: T2:第二题是一道预处理+分组背包,考试中,忘了分组背包怎么敲 ...
- 第一个 bat 文件
要写一个批处理命令 转换场景数据 包括从文件里读入 每一行信息是一个要转换的场景名字 可以拼出路径 到指定路径 执行命令 http://blog.csdn.net/mfx1986/article/de ...
- mac mysql connection
随着网络日益发展还有os x用户的增多,有可能会需要在自己的x系统中运行mysql+php环境,比如架设网站或者测试之类.简单步骤如下: 1.下载MySQL 5.x 发行版,解压并安装映像中的两个安装 ...
- JS读取client端的文件的代码片段
JS读取client端的文件内容的代码片段 if(window.FileReader){ var html5file = this.pipeDetailFileUpLoader._files[0]; ...
- IT架构之IT架构标准——思维导图
参考: [日] 野村综合研究所系统咨询事业本部. 图解CIO工作指南. 周自恒译 人民邮电出版社,2014