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

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

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月前
|
Swift
swift相关项目包含私有库引起的Undefined symbols for architecture arm64
swift相关项目包含私有库引起的Undefined symbols for architecture arm64
25 0
|
8月前
|
数据采集 搜索推荐 数据挖掘
Swift使用Embassy库进行数据采集:热点新闻自动生成器
爬虫程序是一种可以自动从网页上抓取数据的软件。爬虫程序可以用于各种目的,例如搜索引擎、数据分析、内容聚合等。本文将介绍如何使用Swift语言和Embassy库编写一个简单的爬虫程序,该程序可以从新闻网站上采集热点信息,并生成一个简单的新闻摘要。
|
8月前
|
API Swift iOS开发
45 Swift和OC的混编
Swift和OC的混编
94 0
|
9月前
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
59 0
|
Swift iOS开发
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
235 0
iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人
|
Swift
Swift - 不使用pods如何正确添加类似Alamofire这样的库
Swift - 不使用pods如何正确添加类似Alamofire这样的库
109 0
Swift - 不使用pods如何正确添加类似Alamofire这样的库
|
Swift iOS开发
Swift - 与OC混编时如何创建桥接头文件
Swift - 与OC混编时如何创建桥接头文件
393 0
Swift - 与OC混编时如何创建桥接头文件
|
Swift
Swift和OC控制器互相跳转
Swift和OC控制器互相跳转
294 0
|
Swift iOS开发
oc与swift混编
1.swift中调用oc;2.oc中调用swift
242 0
oc与swift混编
|
Swift
OC 和 swift 创建单例方法
OC 和 swift 创建单例方法
299 0