在cocoapods1.4 之前 对于pods库集成swift库 都是需要我们设置 !use_framework
,这样设置之后所有的pods库都必须使用动态库,但这就带来一个问题,如果我需要集成一个静态库怎么办?
水平有限,我们之前只有两种方案:
- 静态库放入主工程中,然后用protocol 包住静态库的方法再发布一个不包含该静态库的协议库,这样各个组件可以调用
- 包装静态库为动态库。
- pods 1.4 有了实验性质的打包静态库,但是坑非常多
经过调研采坑 我们采用了第二种方案。初期不觉得有什么问题,但是之后库越来越多,包装这件事情本身就是费时费力,中间也踩了很多坑,这个是一开始的调研。在开开心心的用了swift之后 我们打包遇到了困难,打包报错动态库依赖过多 大概只能有75左右的动态库 超过了这个数就要GG...
正好这时候cocoapods 1.5发布 文章发布时为1.5.3 大问题基本已经解决。遂采取社区的pods方案。
其实很简单
1 升级pods
gem install cocoapods
2 自己组件库的podsepc 添加s.static_framework = true
这里有个问题说下,显然 很多第三方你发不了podspec,所以需要对主工程的podfile 做些改造。
pre_install do |installer|
Pod::PodTarget.send(:define_method, :static_framework?) { return true }
end
添加这个代码 我们可以把所有的pods库都设为静态库。
3 podfile 里添加 use_modular_headers!
或者你可以增对单独的库使用 :modular_headers => true
网友评论