封装自己的framework静态库
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
封装自己的framework静态库的更多相关文章
- 经验分享:Xcode 创建.a和framework静态库【转】
作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...
- iOS开发之——制作framework静态库教程
环境: 硬件:macbook air 系统:OSX EI Capitan 版本:10.11.3 xcode : Version 7.2.1 (7C1002) 最近在做ios的静态库(据说framewo ...
- 经验分享:Xcode 创建.a和framework静态库
最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- Xcode 创建.a和framework静态库(转)
最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静 ...
- iOS SDK开发之 .framework静态库
查看.a静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建一个静态库工程 ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- Xcode 创建.a和framework静态库(转载)
库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...
随机推荐
- C和C++中的副本机制
函数的形参.return 都有副本机制.数组没有副本机制 (为了节约内存) 函数形参和局部变量的生命周期.函数调用结束后就会被回收.
- JAVA单例模式的实现伪代码
什么是单例?:其定义是单例对象的类只能允许一个实例存在 单例的实现基本原理:1.将该类的构造方法定义为私有访问,不对外暴露从而使其他类不能实例化该类对象,只能通过该类的静态方法得到该类的唯一实例 2. ...
- 测试String——StringBuffer——StringBulider的速度
package comnf147Package; import java.util.ArrayList; import java.util.List; public class String_Test ...
- ORACLE 错误案例—ORA-27102: out of memory
SQL> startupORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceAdditional inf ...
- 安装telnet服务
一.安装telnet1.检测telnet-server的rpm包是否安装 [root@localhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装.出于安全考虑 ...
- 卡方检验(python代码实现)
https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149( 欢迎关注博 ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_5 Mybatis中使用Dao实现类的执行过程分析-查询方法1
继续运行testFindAll方法.把其他类的断点都删除掉. 只在这里加了断点,所以直接就跳转到这里了.RoutingStatementHandler里面的query方法 继续往下走,断点又回到了这里 ...
- java中? extends T 和? super T解析
转:https://blog.csdn.net/qq_25337221/article/details/81669630 PECS原则 最后看一下什么是PECS(Producer Extends Co ...
- Java使用JDBC连接Hive
最近一段时间,处理过一个问题,那就是hive jdbc的连接问题,其实也不是大问题,就是url写的不对,导致无法连接.问题在于HiveServer2增加了别的安全验证,导致正常的情况下,传递的参数无法 ...
- ES6标准入门 第五章:数值的扩展
1.二进制和八进制数值表示法 二进制前缀:0b(或0B): 八进制前缀:0o(或0O). 注意:ES5的严格模式 和 ES6中不再允许使用 0 表示八进制. 将二进制和八进制数值转换为十进制数值 ...