cocoapods swift库静态库之旅

在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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容