OC和swift混合工程更新库时报:target has transitive dependencies that include statically linked binaries

10 篇文章 0 订阅
6 篇文章 0 订阅

OC和swift混合工程更新库时报:target has transitive dependencies that include statically linked binaries。有时间报的错误是:``use_modular_headers!globally in your Podfile, or specify:modular_header`。
一般都是建议在 Podfile 文件下添加 use_frameworks! ,有时候还会建议添加 use_modular_headers! ,那这两个标记位的作用是什么?
我们知道 Podfile 的作用是处理 CocoaPads ,而 use_frameworks!告诉 CocoaPods 你想使用 Framework 而不是静态库,而默认由于 Swift 不支持静态库,因此有一开始 Swift 必须使用 Framework 的限制。
态库和 Framework 的区别在于:

*.a 的静态库类似于编译好的机械代码,源代码和库代码都被整合到单个可执行文件中,所以它会和设备架构绑定,并且不包含资源文件比如图片;
Framework 支持将动态库、头文件和资源文件封装到一起的一种格式,其中动态库的简单理解是:不会像静态库一样被整合到一起,而是在运行或者运行时动态链接;
另外一个配置 use_modular_headers! ,它主要是将 pods 转为 Modular,因为 Modular 是可以直接在 Swift中 import ,所以不需要再经过 bridging-header 的桥接。
是开启 use_modular_headers! 之后,会使用更严格的 header 搜索路径,开启后 pod 会启用更严格的搜索路径和生成模块映射,历史项目可能会出现重复引用等问题,因为在一些老项目里 CocoaPods 是利用Header Search Paths 来完成引入编译,当然使用 use_modular_headers!可以提高加载性能和减少体积。
一种解决方法:在Podfile文件中使用use_frameworks!,把原来的含有静态库的私有库或公有库拖入工程。该种方式可能需要修改头文件的引入方式。这种方式处理简单。
另一种解决方法:在Podfile文件中使用use_modular_headers!。在targets->build settings->enable bitcode配置成NO;targets->build settings->built active architecture only->debug 选择NO;project->build settings->built active architecture only->debug 选择NO。这样配置好后,可能有一堆报错,让后修改完就好了(如原来self.className报错,修改为self.description就好了)。我当时把两个app整合在一起可是花了两天的。

pods更新代码时的报错。

-> Using libwebp (1.2.4)
  - Running pre install hooks
[!] The 'Pods-FanHuaNetApp' target has transitive dependencies that include statically linked binaries: (/Users/apple/dykj/工作/FanHuaNet-swift/Pods/PayManager/aliPay/Frameworks/AlipaySDK.framework and /Users/apple/dykj/工作/FanHuaNet-swift/Pods/PayManager/weChat/libWeChatSDK.a)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值