作为SDK开发与维护的工程师,framework的制作流程必须要熟悉!下面我详细介绍一下制作framework的流程.
-
首先创建工程,选择iOS->Cocoa Touch Framework,如下图所示:
image.png
image.png
-
进入项目后,删除系统自带的文件,导入需要制作SDK得源文件,如下图所示:
image.png
image.png
-
找到源文件中所引入的第三方库,删掉重新导入,在导入时选择不包括在SDK中,避免与使用方在第三方库上面的导入冲突,如下图所示:
image.png
image.png
-
接下来对我们的这个.framework静态库进行一些简单的设置,如下图所示:
a、将Build Settings中Link下面的Dead Code Stripping设置为NO,网上对此项的解释,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。

b、将Build Settings中Link下面的Link With Standard Libraries关闭,我想可能是为了避免重复链接

c、将Build Settings中Link下面的Mach-O Type设为Static Library,framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。

d、源代码中如果包含分类,继承等是,最好在Build Settings中Other Linker Flags 增加参数-ObjC,同时支持-all_load

e、提取需要暴露在外的.h文件,如图所示:

可以直接将project中的文件拖入到public,也可以在那个.h文件上选择,如图所示:

f、设置SDK得版本号和最低支持的版本,如图所示:

g、设置SDK的打包版本为release版本


-
分别在模拟器和真机中运行程序,然后在本地找到打包完的程序,两者有分为真机版本和模拟器版本framework(iphoneos后缀代表真机版本,iphonesimulator后缀代表模拟器),如下图:
image.png
image.png
-
打开终端,进行真机版本和模拟器版本framework合并
lipo -create 模拟器包地址 真机包地址 -output 真机包地址
如下图所示:

使用命令行 lipo -info 查看framework架构信息
lipo -info 合并后的真机包地址

此时framework已经制作完成,可以导入项目使用了哦!
网友评论