Xcode开发framework包的一些经验 制作

https://blog.csdn.net/maybesong/article/details/54313986

最近要做一个ios上的蓝牙sdk,研究了下framework,经过半个多月的折腾终于有了结果。再次吐槽下关于编程的中文网页质量之低。

首先是在xcode中建立工程,编写代码,项目名为blesdk,这个名字后面还会用到。建立项目的时候记得设置为Cocoa Touch Framework,如图 
这里写图片描述

编译库的时候要注意,基于发布状态有debug和release两种选择,然后基于模拟器和真机又有两种选择,这样合起来就有四种状况,我们把这四种情况都演习一遍。

选中上方的菜单,Product->Scheme->Edit Scheme, 
这里写图片描述

出来如下的对话框 
这里写图片描述

可以看到这里是执行debug和release的选择的,真机和模拟器的选择在target这里,选择真机就按真机编译,选择模拟器就按模拟器编译。 
这里写图片描述

挨个编译一遍后,我们发现左下角的blesdk.framework由红字变为黑字了,在其上右键弹出菜单,选择Show in Finder,然后退到上一级菜单,可以看到如下场景 
这里写图片描述

为了后面操作方便,我们把这四个framework复制粘贴到同一个路径下面,略微改个名字,防止文件名相同而覆盖,如下图 
这里写图片描述

下面我们再来进行最重要的合并工作,命令行进入当前目录,用lipo命令查看这几个framework 
这里写图片描述

可以看到,真机是按照arm7和arm64生成的,模拟器是按照x86_64和i386生成的,所以我们只要合并releasesim和releaseios两个文件,就能覆盖所有的状态。那么如何合并呢?

扫描二维码关注公众号,回复: 449221 查看本文章

首先我们建立一个新目录,将其改名为final.framework,其图标会变为framework一样的乐高积木图标。

然后调用此命令 
lipo -create 
releasesim.framework/blesdk 
releaseios.framework/blesdk 
-output 
final.framework/blesdk

命令执行完毕后,我们可以打开这个final.framework和两个源framework,看到如下的内容 
这里写图片描述

仔细点进去看,就会发现两个源framework里面的Headers是一样的,Info.plist也是一样的,Modules中都是和自己平台对应的文件,将这些文件夹全部复制粘贴到final.framework中,Modules文件夹记得选择合并而不是覆盖

这样我们就得到了最后的framework文件,你可以将其改成任何名称发布,比如说BleSDK_v3_2.framework,它可以用来真机调试或者在模拟器上调试,而不会发生未找到模块的事情

猜你喜欢

转载自my.oschina.net/huqiji/blog/1810499