ios 制作自已的framework
本文转载至 http://blog.csdn.net/chen505358119/article/details/9190731
ios中我们写的代码有时不愿意让别人看到,可能对它进行封装,生成一个静态库如典型的.a,还有一种就是和
苹果自带的库一样的后缀名为.framework的库,个人推荐使用.framework,因为.a不仅要装其添加进去,还要
将对应的头文件添加到项目中。
1.新建一个静态库工程。file--new--project,弹出框中选择Ios--framework&library中的cocoa touch static library.点击NEXT。输入product name,这里为libZW.
2.删除向导所生成工程中的Target:
删除目标后工程状态
3.删除旧目标对应的工程文件夹:
删除前:
删除前,注意,此处删除会弹出提示框,要选择"只删除引用"
删除后如下图
4.删除旧目标对应的编译设置(Product菜单|Edit Scheme命令):
点击左下角的Manage Schemes按钮:删除后如下图
点击OK返回
5.增加一个新目标,点击下面的Add Target
在弹出的对话框中选择Mac OS X下的Bundle
如上图,给库取一个名字,保持默认的Framework(CoreFoundation),然后点击Finish.
6.修改新目标的工程设置.选中TARGETS中对应的目标,Build Setting页:在Architectures下将“Base SDK”
改为"Lastest iOS",然后将"Architectures"改为"Standard":
在Deployment下,将"Mac OS X Deployment Target"改成“Compiler Default”,将“Targeted Device Family”改成
需要的,此处改成了"iPhone/iPad",同时可以根据需要修改"iOS Deployment Target",此处改为了"iOS 4.3":
在 Linking 中,将 “Dead Code Stripping” 改为 “NO”,将 “Link with Standard Libraries” 改为 “NO”,将 “Mac-O Type” 改为 “Relocatable Object File”:
在 Packaging 中,将 “Wrapper Extention” 改为“framework”:
7、修改目标的 Info。点击 Info:
将 “Bundle OS Type Code” 改为 “FMWK”(Framework 的意思):
8、修改预编译头:
9.往项目中拖进工具类,或新建类具体的我就不多说了如图
10.导出相关文件。选中Target,点击Build Phases,然后点击右下角的"Add Build Phase"
在弹出的菜音中选择"Add Copy Header",添加完成后, 展开"Copy Headers",下面有Public、Priviate、Project三个子项:
然后点击下面的+号,从项目中选择头文件,点击Add按钮完成添加。此时,我们看到导出的头文件在
Project下,这样不能暴露给别人使用,将其拖动到Public下:
然后分别选择模拟器和iOS Device模式下编译,它会生成libZW.framework
可能有的人生在的是Debug模式下的,那你就应该把第四步中的build Configure改成release模式,再生成一次就行了,
这时模拟器的framework和iOS Device的framework是分开的,
怎样知道framework是支持模拟器的还是支持真机的呢可以用命令,先cd到libZW.framework里面,你会看到里面的libZW,然后执行lipo -info libZW
如果是i386表示支持真机
如果是armv7支持模拟器
那怎样将其合呢
执行命令命令lipo -create xxxx/libZW xxxxx/libZW -output libZW
你会看到在Debug-iphoneOS同级目录下会有一个新的libZW,这个表示继支持模拟器又支持真机的,如果不信可以执行命令
lipo -info libZW你会看到里面既有armv7又有i386,然后将其替换Release-iphoneos里面的libZW.framework目录下的libZW,
此时的libZW.framework可以同时在真机和模 拟器中同时使用,好了就说这么多了
转地址:http://blog.csdn.net/fengsh998/article/details/8290687
ios 制作自已的framework的更多相关文章
- iOS制作自己的Framework框架
1.新建工程选择iOS —> Cocoa Touch Framework 2.进入工程将工程自带的文件干掉 3.导入自己所需的文件 4.4.TARGETS —> Build Setting ...
- iOS静态库及Framework 创建
本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在 ...
- [iOS] 建立与使用Framework
[iOS] 建立与使用Framework 前言 使用XCode开发iOS项目时,开发人员可以将可重用的程序代码,封装为Library或是Framework来提供其他开发人员使用.这两种封装方式在使用的 ...
- iOS+Swift: 使用MessageUI.framework发送短信
在iOS中, 可以使用MessageUI.framework框架发送短信, 步骤如下: 代码下载http://git.oschina.net/yao_yu/swift_cnblogs_samples/ ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- iOS 制作 framework 教程
直接看步骤 废话不多说,哈哈! 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除TestFrameWork对应的工程文件夹: 5:删除bulid ...
- WWDC2014之iOS使用动态库 framework【转】
from:http://www.cocoachina.com/industry/20140613/8810.html JUN 12TH, 2014 苹果的开放态度 WWDC2014上发布的Xcode6 ...
- IOS静态库和Framework区别
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...
- iOS 系统架构 && 常用 framework
整理自互联网,感谢原文作者! 1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch lay ...
随机推荐
- Amazon EC2安装mysql多实例并配置主从复制
1.MySQL安装: EC2直接使用yum安装mysql很方便: yum install mysql mysql-server mysql-libs 此处安装了三个包 完事之后可以直接使用 servi ...
- 【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现
在上一篇文章<调用网络API>中,我仅仅讲述了怎样直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用.当然本程序的实现也是借助于扇贝网的API接口文档 ...
- Digg工程师讲述Digg背后的技术
虽然最近业绩有所下滑,也出现了一些技术故障,但Digg作为首屈一指的社会化新闻网站,其背后的技术还是值得一探,Digg工程师 Dave Beckett 在今年4月份写一篇名为<How Digg ...
- Java 中字符串的格式化
1.格式字符串语法 产生格式化输出的每个方法都需要格式字符串 和参数列表.格式字符串是一个String,它可以包含固定文本以及一个或多个嵌入的格式说明符.请考虑以下示例: Calendar c = C ...
- lodash 工具库
lodash是一套工具库,内部封装了很多字符串.数组.对象等常见数据类型的处理函数. 1.lodash的引用 import _ from 'lodash' 用一个数组遍历来说明为什么要使用lodash ...
- Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知(转)
信号 ( signal ) 机制是 UNIX 系统中最为古老的进程间通信机制,很多条件可以产生一个信号. 信号的产生: 1,当用户按下某些按键时,产生信号. 2,硬件异常产生信号:除数为 0 ,无效 ...
- hadoop native本地库问题总结
近期,打算hbase建表用snappy压缩时,碰到一些hadoop本地库的问题. 事实上这些问题是一直存在的,仅仅是不影响正常使用,就没有引起重视. 这次希望彻底解决下面问题: 问题一:运行start ...
- Apache代理80端口
找到Apache下的conf\extra\httpd-vhosts.conf文件 新增以下内容于合适位置 ↓表示80端口 <VirtualHost *:80> ServerAdmin * ...
- 出现蓝屏代码0x0000007b的原因及解决办法
出现蓝屏代码0x0000007b的原因通常是硬盘的存储控制器驱动加载错误,我们可以通过对BIOS界面进行修复来解决这个问题.下面小编将详细介绍解决蓝屏代码0x0000007b的方法,一起来看看吧 导致 ...
- CentOS 7 中 Docker 的安装和卸载
安装Dokcer Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: [root@localhost ~]# yu ...