在项目开发的过程中,经常使用静态库文件(SDK,俗称.a文件)。例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节。
简介:
库是一些没有main函数的程序代码集合。除了静态库,还有动态链接库,他们之间的区别是:静态库可以编译到我们的执行代码中,应用程序可以在没有静态库的环境中运行;动态库不能编译到我们的执行代码中,应用程序必须在有链接库文件的环境下运行。
创建静态库的步骤如下所示,
1、创建Static Library,新建->Project,选择Static Library,如图,
将工程命名为LYGTestSDK,然后将工程保存到一个空目录下。
一个静态库工程由头文件和实现文件组成,这些文件将被编译为库本身。
当创建静态库工程时,Xcode会自动添加LYGTestSDK.h和LYGTestSDK.m。你不需要实现文件,因此右键单击LYGTestSDK.m选择delete,将它删除。
将控件从Finder中拖到Xcode下LYGTestSDK目录下。
但我选择的是 真机Device进行编译的,所以这个libLYGTestSDK.a只能针对iOS真机Device进行使用,而不能在模拟器Simulator上面使用,为了解决这个问题,只要选择模拟器Simulator进行编译,就可以生成对应的模拟器运行需要的libLYGTestSDK.a文件,只需要选择模拟器iPhoneXX再次编译即可。
上面的Debug-iPhones里面包含iPhone真机所需要的libLYGTestSDK.a静态库文件,而下面的Debug-iPhoneSimulator里面包含的时iPhone模拟器所需要的libLYGTestSDK.a静态库文件。两者不能混用。
合并静态库
针对真机和模拟器的静态库文件只能在一个平台下面使用,好在我们可以将真机和模拟器上面的静态库文件合并成一个在真机和模拟器都可以使用的静态库文件,通过在终端输入命令即可完成该目的
打开终端,复制以下命令
lipo -create /Users/xxx/Library/Developer/Xcode/DerivedData/LYGTestSDK-blwtilpjjohqcegeqlgbjvhiggbc/Build/Products/Debug-iphoneos/libLYGTestSDK.a
/Users/xxx/Library/Developer/Xcode/DerivedData/LYGTestSDK-blwtilpjjohqcegeqlgbjvhiggbc/Build/Products/Debug-iphonesimulator/libLYGTestSDK.a
-output /Users/xxx/Desktop/libLYGTestSDK.a
这个是相对自己的路径,读者可以直接将文件拖到终端即可识别完整的路径.
生成双方都可用的libLYGTestSDK.a --并存在在桌面。