由于公司的私有库其他部门不能访问,想要提供的话又不可能提供源码,一般以静态库的方式提供,所以这里记录下,pod打包静态的库相关信息
Cocoapods 支持打包成动态库或者静态库,但是需要插件cocoapods-packager
可通过 gem安装
sudo gem install cocoapods-packager
cocoapods-packager 打包只需要依靠podspec文件即可,所以本地有没有源码文件没有关系。
具体命令
pod package xxxx.podspec
这样顺利的话可以打包出一个framework动态库
下面是这个插件的相关参数:
--force: 如果以前打包过的话,就覆盖同名文件
--no-mangle:当这个pod有依赖其他pod时,插件会默认修改依赖的名称,以防止主工程也依赖了这个pod,但是版本不同的问题,添加这个参数就不会修改名称了。
--embedded: 嵌入?
--library: 静态库
--dynamic: 动态库
--bundle-identifier: 如果是framework的话可以,可以修改Bundle ID
--exclude-deps: 是否把以来的pod打包进来
--configuration: 打包配合,debug 或者 release, 默认release
--subspecs: 要打包的子pod
--spec-sources=默认肯定是从官方的repo仓库找代码仓库,如果是私有的话,就要在这里写明repo仓库地址了
--verbose: 打印出脚本执行过程
栗子:
pod package CDChatList.podspec --no-mangle --library --exclude-deps --verbose --spec-sources=https://chdo.github.git,https://chdo.github2.git
打包完成后,会在当前目录得到个表明pod版本的文件夹,里面包含了,编译好的.a 文件,和各个架构的.o文件等,你可以直接使用这个.a 文件了。
这个.o就是目标文件,.a就是把这些文件都集中到一起,你可以定制自己的.a文件,控制包含的架构,包含的依赖库等,相关命令记录如下:
查看.a包含架构
lipo -info xxxx.a
按架构分离静态库
lipo xxxx.a -thin armv7 -output xxxx.a
在当前目录拆分静态库为目标文件
ar -x xxx.a
将目标文件合并为静态库
libtool -static -o xxxx.a *.o
将不同架构静态库合并为通用静态库
lipo -create xxxxx.a xxx.a -output XXX.a