iOS将多个第三方sdk打包成静态库

前段时间做了个sdk打包成动态库,发现使用非常方便各种好处也特别多,然后在最后将APP打包时出问题了,打包时候动态库打不进去,想了很多办法还是没有解决,又因为赶时间所以只能重新打成静态库了。  

在打成静态库的时候遇到的最大的问题就是我这个sdk包括了很多的第三方SDK,里面有很多静态库。所以就是静态库中包含静态库,在此啰嗦一下,打包时动态库是可以直接将静态库打包进去的,而静态库中是没有办法包含静态库了,就算将第三方静态库打包进自己的静态库中,然后编译的时候它是不会将第三方静态库一起编译的(这是我根据使用静态库运行时报错的错误信息推断的或许不准确欢迎同行指正)。 

第一步当然是创建个静态库工程了  

 

然后根据需要可以决定是否删除系统自动创建的文件(文件是以工程名为名的)。  

第二步在Build Phases中添加Headers标签,再将你要打包成静态库的文件拖动到这个工程中,从Headers中的Project将你需要暴露的头文件拖动到Public中,如图: 

 

第三步就是导入第三方的静态库和头文件了,静态库编译的时候只要语法正确能够找到文件就可以了,所以你要在打静态库的时候导入所有涉及的库和文件:

注意,Add to targets不要勾上,完成后的结果是你虽然导入了静态库了,但是这里什么都没有:

如果这个地方有你导入的第三方静态库一定要将其删除.

到了这一步如果没有问题你编译就可以成功了,然后静态库就出来了。

可能有的第四步,如果你需要打成静态库的文件中有拓展(Categort),那么这个地方other Linker Flags要写入-ObjC,如图 

在Deployment中你可以设置你的静态库支持的最低版本:

第五步,使用静态库。在项目工程中使用静态库你不但要将自己的静态库导入的工程中,你还要将你的静态库所依赖的第三方静态库也一起导入你的工程中,记着你的静态库所使用的系统的动态链接库也要一并在项目中加上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章