最近公司有个新需求,要将已经写好的一个项目打包成静态库,供本公司及其他公司使用。我们的静态库可能会依赖很多三方库,把这些依赖都一并打包进静态库,包会变得很大、很笨重,同时别人在用你的静态库可能会出现三方依赖重名的冲突。显然将依赖一起打包进静态库不是一个好方式,下面给大家介绍一个不把依赖一同打入包的方式,使用静态库的工程中导入我们静态库中的依赖就可以了:
先介绍借助Pod的方式
1. 用Xcode新建一个工程,注意,选择 Cocoa Touch Framework
2. 点击 TARGETS -> Build Settings -> Mach-o Type,将 Dynamic Library(动态库) 改为 Static Library(静态库)
3. 该.h文件是自动生成的文件,可以删除
4. 然后在这个文件夹下拖入准备打包的文件
拖入后工程目录
5. 用cocoaPods导入工程的三方依赖(怎么导入这里就不作详细介绍了,相信大家都已经很熟悉了),导入依赖后的工程目录如下,
6. 配置静态库的头文件
7. 接下来就是编译打包静态库了,打包的静态库有两种类型,Debug版和Release版,
Debug版
command + B 编辑一下,然后点击Products文件夹下的.framework,show in Finder
Release版
command + B 编辑一下,然后点击Products文件夹下的.framework,show in Finder,这时候此处就多了个文件夹
8. 最后就是合并Debug版和Release版为一个静态库,供模拟器和真机都可以使用
打开终端使用合并命令: lipo -create 静态库1路径 静态库2路径 -output 合并的静态库
这样在桌面就生成一个TestAdHocLib文件,用这个文件替换图中Debug或者Release文件夹中的TestAdHocLib文件即可
以后就可以将 TestAdhocLibSDK 这个文件夹拖进工程使用
此种方式打包的静态库并没有将三方依赖一起打入库,用到该静态库的工程导入其的所有依赖,即可使用,然后在用到的地方import一下头文件
到此为止整个打包静态库的过程就结束了,希望能对大家有所帮助!
#import <TestAdhocLib/xxxxx.h>
下面介绍不借助Pod,传统的打包方式
这种方式只能将静态库中的三方依赖先下载下来,手动导入要打包静态库的工程中,如果这样直接编译,就会把依赖一同打包进静态库,显然这不是我们要的方式。当我们手动导入依赖后,TARGETS -> Build Phases -> Linker Binary With Libraries 下就会有这些依赖,在编译前清空这里的选项,就不会将依赖打包进去。
还是建议大家使用上面借助Pod的方式哦~ 原因你懂的~毕竟用Pod管理三方比起手动管理会方便很多
到此为止整个打包静态库的过程就结束了,希望能对大家有所帮助!