gpt4 book ai didi

ios - 在 Swift 中将外部框架嵌入到自制的私有(private)框架中

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:21 28 4
gpt4 key购买 nike

我使用 Xcode 6 和 Swift 构建了一个框架,我的框架使用 SwiftyJSON作为依赖 - 通过 Carthage 添加.我存档了我的框架,并使用 lipo 创建了一个适用于模拟器和 iOS 设备的构建,当我尝试将我的框架用于一个空应用程序时,我在运行时遇到了崩溃:

dyld: Library not loaded: @rpath/SwiftyJSON.framework/SwiftyJSON
Referenced from: /Users/hd/Library/Developer/CoreSimulator/Devices/324FD1CD-4A06-459B-AE6D-318197B5697E/data/Containers/Bundle/Application/555871BB-7AA1-4AED-90CE-EE0A628A794F/CollaborativeTodo.app/Frameworks/XXXXX.framework/XXXXX
Reason: no suitable image found. Did find:
/Users/hd/Library/Developer/CoreSimulator/Devices/324FD1CD-4A06-459B-AE6D-318197B5697E/data/Containers/Bundle/Application/555871BB-7AA1-4AED-90CE-EE0A628A794F/CollaborativeTodo.app/Frameworks/SwiftyJSON.framework/SwiftyJSON: no matching architecture in universal wrapper

这是我的树状结构的样子——我的框架名称被故意模糊了:

Project arborescence

常规选项卡:

General

构建阶段: Build Phases

如果我在我的项目中包含使用 Carthage 的 SwiftyJSON,它会起作用,但我不希望用户被迫包含第三方库。 如何将 SwiftyJSON 嵌入到我的框架中并告诉 Xcode 在运行时使用嵌入式版本,而不是尝试在项目中查找框架?

最佳答案

您无法避免让应用程序直接包含 SwiftlyJSON。更好的说法是,您应该避免让应用包含 SwiftlyJSON。如果该应用程序由于某些其他原因已经具有 SwiftlyJSON,那么由于重复的符号,您将给他们带来巨大的痛苦。根据他们做事的具体方式,他们可能不会出错,只会出现未定义的行为,这更糟。自动包含是一种非常好的功能,直到它完全爆炸并且没有人能弄清楚如何修复它。如果您在 StackOverflow 上搜索“ios 重复符号”,我估计其中大约一半是由于框架试图自动包含子框架(通常是 SBJSON)。

记录您所依赖的内容并将其作为嵌套依赖项包含在您的 Cartfile 中。 Carthage 将为他们构建它(他们仍然需要将它拖到他们的项目中)。

关于ios - 在 Swift 中将外部框架嵌入到自制的私有(private)框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com