创建你自己的framework

1.新建Cocoa Touch Framework工程

 

2.创建或导入你要打包的类

3.配置framework最低支持的版本

4.配置Build Phases

在TARGETS -> Build Phases -> Headers中,设置framework中的哪些类是公开的,哪些类是私有。

5.配置TARGETS -> Build Settings

1>在TARGETS -> Build Settings -> Mach-O Type中设置输入文件的类型。

Mach-O文件类型分为以下五个,整好对应上面图片中的五个选项:
Executable:应用的主要二进制。
Dynamic Library:动态链接库。
Static Library:静态链接库。
Bundle:不能被链接的tbd或Dylib,只能在运行时使用dlopen()加载,可当做macOS的插件。
Relocatable Object File:可重定向文件类型。

设置为Dynamic Library的framework,需要注意一点。自己编译的动态库和系统动态库在本质上是一样的,只是使用方式不一样。自己编译的动态库由于签名校验限制,只能当作静态库一样使用;系统的动态库不受签名校验限制,可以动态加载。

关于iOS中的静态库和动态库的区别可以阅读,iOS中的静态库和动态库

2>在TARGETS -> Build Settings ->Build Active Architecture Only中设置为NO。那么当前打包的framework支持所有的设备;否则设置为YES的话,打包时只能用当前版本的模拟器或真机运行。

 

3>在TARGETS -> Build Settings -> Dead Code Stripping设置为NO。

现在你需要改变一些其他的设置,尤其是那些在二进制库中遗留下的设置,编译器提供给你一个选项,来消除永远不会被执行的代码和debug符号。因为你正在创建framework供他人使用,最好禁掉这些无效代码和debug符号,让用户自己选择对自己的项目有利的部分使用。

4>在TARGETS -> Build Settings -> Strip Debug Symbol During Copy设置为NO。

5>在TARGETS -> Build Settings -> Strip Style设置为Non-Global Symbols。

 

6.Scheme设置为release模式

7.进行编译

使用 Shift + Command + I 进行 Profiling 编译,然后选择真机或者Generic iOS Device记性一次编译。这样才能生成两个framework,一个是Release-iphoneos的,一个是Release-iphonesimulator的,他们针对的指令集架构不同。

这里有个问题,不要使用Command + B进行编译,因为这样我们得到的会是一个 Debug 版本的结果,在绝大多数情况下这应该不是我们想要的,除非你是需要用来进行调试。

 

如果你对指令集架构不了解,可以查看Architectures与指令集架构armv6,armv7,armv7s,arm64,i386,x86_64这篇博客。

8.真机版本和模拟器版本framework合并

1>通过终端,使用命令行 lipo -info 查看framework架构信息。

Release-iphonesimulator:

Release-iphoneos:

2>通过终端,合并framework。

命令:$ sudo lipo -create [输入路径1] [输入路径2] -output [输出路径]

3>通过终端,查看合并后的framework架构信息。

如果信息包含模拟器和真机的指令集架构就可以了,如下图:

9.这个framework就可以被集成使用了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值