【问题标题】:Pod handling in cocoa touch framework - Got error on Device可可触摸框架中的 Pod 处理 - 设备上出现错误
【发布时间】:2023-03-27 23:27:01
【问题描述】:

我已经用谷歌搜索了大约 2-3 个小时并尝试了几件事,但我无法让这个工作:

我想要实现的目标

目标是拆分 UI 代码和业务逻辑。业务逻辑应该封装在一个单独的框架中。一个 Cocooa Touch 框架。因此,业务逻辑可以在例如 WatchKit 应用程序中重用。

我是如何做到的

  1. 创建一个新的 Xcode 项目 -> 选择单一视图应用程序。
  2. 添加新目标 -> 选择 Cocoa Touch 框架。
  3. 运行 pod init。
  4. 在 Podfile 中为每个目标添加一些 pod。
  5. 运行 pod install。
  6. 在 UI 和框架中实现一些代码

这在模拟器上完美运行。一旦我将在设备上运行它,调试器中就会出现以下错误:

dyld:库未加载:@rpath/SwiftAddressBook.framework/SwiftAddressBook 引用自:/private/var/mobile/Containers/Bundle/Application/48E58889-78D4-4D71-B8DA-154ADEB98894/Pod Error Framework.app/Frameworks/PodErrorKit.framework/PodErrorKit 原因:找不到图片

我不知道如何解决。有什么建议么?

我正在使用:

  • cocoapods 0.38.2
  • Xcode 6.4 (6E35b)
  • 部署目标 iOS 8

我已将项目(只是一个假项目,但同样的错误)上传到 github。可以here查看。

【问题讨论】:

  • 注意:这不一定是 Swift 特有的。用 Objective-C 编写的 CocoaPods 和 Cocoa Touch 框架也会出现同样的问题。
  • 你能发布 PodErrorKit Podspec 吗?
  • 您添加的 pod 可能不支持 swift 2.0。
  • @Arvind 是Xcode 6.4,与 Swift 2.0 无关

标签: ios swift cocoa cocoapods dyld


【解决方案1】:

修复在这里https://github.com/keithyipkw/pod-cocoa-touch-framework

SwiftAddressBook.framework 是动态的,因此您需要像 PodErrorKit 一样将其嵌入到您的应用程序中。详细信息在我的提交中。模拟器通过某种方式能够找到应用程序之外的框架(在派生数据中靠近它)来作弊。

由于缺少 Pods.framework,我无法编译您的项目。我找不到目标,所以我删除了它。

【讨论】:

  • 已验证@keithyip:(1) 打开.xcworkspace。 (2) 构建阶段 (3) + 使用库链接二进制文件:SwiftAddressBook,必需 (4) + 嵌入框架:SwiftAddressBook
  • 框架未嵌入到您的应用中。您对 PodErrorKit 做得对,但错过了 SwiftAddressBook。
猜你喜欢
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多