ios - 伞架

标签 ios swift frameworks

我创建了一个框架,其中插入了第二个框架,即所谓的“伞形框架”。当我在测试应用程序中插入框架时(嵌入式二进制文件和链接的框架和库,两者)无法构建应用程序,我收到以下错误:

ld: 找不到架构 arm64 的框架“embeddedInMyFramework” clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

然后将该框架(embeddedInMyFramework)也添加到嵌入式二进制文件和链接的框架和库中,并尝试构建而不是工作正常。稍后从嵌入式二进制文件和链接的框架和库中删除该框架,并且仍然可以正常工作。有人可以帮我解决这个问题吗,我不确定第一次将框架添加到嵌入式二进制文件时会发生什么,以及如何解决这个问题(它能以某种方式工作而根本不添加到嵌入式二进制文件中吗)

最佳答案

我能够建立一个有效的 Umbrella 框架并写下我的方法。

第 5 步应删除您的链接器错误 ld: framework not found ..


设置:

  • 一个基于 Swift 的“客户端”项目,将 Umbrella 框架作为依赖项

  • 一个依赖于 Umbrella Framework 的动态框架(主要是 C++ 和 ObjC)


步骤:

  1. 将 Umbrella Framework 与其依赖的(子)Framework 链接起来,并确保在构建时将其复制到产品中。

Setting of Project -> Build Phases


2. 将依赖(子)框架的位置添加到 Umbrella Framework 项目的 Framework Search Paths

Setting of Project -> Build Settings


3. 在“客户端”项目中确保链接并嵌入 Umbrella Framework

General Setting Client


4. 确保将 Umbrella Framework 复制到(客户端)应用程序包以避免 dyld: Library not loaded: @rpath/... 错误。 通常在 ...Build/Products/Debug-iphoneos/YOUR_CLIENT_APP.app 下的(客户端)应用程序现在应该在名为 Frameworks 的文件夹中包含您的 Umbrella Framework。

Project Setting Embed Framework


5. 在“客户端”项目中确保将 Umbrella Framework 的路径添加到 Framework Search Paths
如果 ld: framework not found '[Framework_Name]' for 体系结构 ... 错误仍然存​​在您还可以在此处添加(子)框架的路径。

Project setting framework search path

关于ios - 伞架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397746/

相关文章:

objective-c - ARC什么时候工作?编译还是运行时?

android - super 集成中的 Android 和 iOS 应用程序签名

ios - 为什么 UIView 的这些自动布局约束会阻止 UIButton subview 接收触摸事件?

ios - 如何编写协议(protocol)将数据向后传递给 UITableViewController?

objective-c - 如何将 obj c 框架导入 swift 桥接头?

php - MVC 框架中的模型应该有多粗粒度?

qt - 整合QT和OpenCV?

ios - CATransform3DMakeRotation 框架

ios - 如何防止iOS应用程序被挂起

ios - ObjectMapper 无法序列化响应