前言
由于工作需要,要做一个SDK提供给第三方开发人员,就是将我们的一个功能模块封装一下,不能直接给对方源码,将源码打包成二进制文件,这也是我们常见的使用第三方工具的打包方式。
在创建sdk的时候,由于开发的时候经常要调试,不能每次调试就打一包,所以我们要建立在一个工程里,以便于我们开发和调试。
1.创建工程
2.创建Framework
1.创建framework工程文件
2.修改配置 将Mach-0 type 设置成为静态库文件 Static Library
创建完成后就会出现下图的framework
3.创建完成之后,我们就要建立我们自己的文件。
这里要记住,是在SDK文件夹下建立,找到自己建立的sdk文件夹,然后在里面建立自己的文件。
这里可以看见iOSlibFrame文件夹是我们SDK开发的目录,后面所有的SDK开发都在这里进行。
在开发过程中会有很多的.h文件,有些文件是外部调用着引用的接口文件,有些是SDK内部使用的,不要暴露出去,我们需要提供给开发者使用的头文件我们需要设置一下:
现在TestA就是外部开发者可以访问的头文件。
然后command+B编译一下,在主工程中引用TestA,就可以随便去调用TestA中的方法了。
这里说明一下:调用的方式有两种,第一种是直接引用:
#import "TestA.h"
第二种方式是先编译好后将编译后的文件放入主工程中
#import <iOSLibFrame/TestA.h>
两种方式都可以,不过第二种好处是,在写的时候就能知道哪些头文件是不会暴露出去的,心里会有数。
最后当所有的开发完成后,就是打包了,这里打包包括两个包,一个包是真机运行的framework,一个是模拟器运行的framework,看自己情况,如果自己的framework只能真机运行,那就直接用就行,如果两个环境下都运行,则需要将两个环境下的包合并到一起。
我这里是Debug环境,到时候真正发包的时候 大家用release环境就行。
在这两个文件夹下都有一个iOSLibFrame.framework,现在见它们拷贝出来道一个目录下进行合并。
合并的命令:
lipo -create /Users/aaa/Desktop/Code/E-csdn/ios-sdk/SDK/Debug-iphoneos/iOSLibFrame.framework/iOSLibFrame /Users/aaa/Desktop/Code/E-csdn/ios-sdk/SDK/Debug-iphonesimulator/iOSLibFrame.framework/iOSLibFrame -output /Users/aaa/Desktop/Code/E-csdn/ios-sdk/SDK/out/iOSLibFrame
合并成功后会有一个iOSLibFrame 文件 这个就是我们最后的文件。
然后将这个文件拷贝到 Debug-iphoneos/iOSLibFrame.framework 去替换里面的iOSLibFrame。最终iOSLibFrame.framework这个文件就是我们可以提供给开发者的静态库。