关闭

封装自定义控件的sdk(创建静态库static library)

493人阅读 评论(0) 收藏 举报
分类:

在项目开发的过程中,经常使用静态库文件(SDK,俗称.a文件)。例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节。

简介:

库是一些没有main函数的程序代码集合。除了静态库,还有动态链接库,他们之间的区别是:静态库可以编译到我们的执行代码中,应用程序可以在没有静态库的环境中运行;动态库不能编译到我们的执行代码中,应用程序必须在有链接库文件的环境下运行。

创建静态库的步骤如下所示,

1、创建Static Library,新建->Project,选择Static Library,如图,

将工程命名为LYGTestSDK,然后将工程保存到一个空目录下。

一个静态库工程由头文件和实现文件组成,这些文件将被编译为库本身。

当创建静态库工程时,Xcode会自动添加LYGTestSDK.h和LYGTestSDK.m。你不需要实现文件,因此右键单击LYGTestSDK.m选择delete,将它删除。

将控件从Finder中拖到Xcode下LYGTestSDK目录下。


对你的控件的头文件需要做的另一件事是将其添加到库的主头文件LYGTestSDK.h中。在这个主头文件的帮助下,开发者使用你的库仅仅需要导入一个头文件,如下面的代码一样,而不是自己去选择自己需要的一块导入。


选择真机,编译项目,生成对应的静态库.a文件.
当Products文件夹下的.a文件显示红色时,表明这还不是一个实际存在的文件,我们不能在物理磁盘中找到它。只有在编译以后它才是一个实实在在的文件。

这时候libLYGTestSDK.a文件变为黑色状态了,表明编译过后它是一个真是存在于物理磁盘的文件


但我选择的是 真机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 --并存在在桌面。







0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26725次
    • 积分:664
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:15篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论