【发布时间】:2015-08-20 04:54:28
【问题描述】:
我正在尝试为 iOS8 构建一个 Cocoa Touch 框架,该框架最终将嵌入应用程序并提交到 App Store,因此发布版本仅包含 armv7 但调试版本也必须在模拟器中运行,这一点很重要。因此,我一直在关注this tutorial,并且在尝试在嵌入了框架的模拟器中运行应用程序时遇到运行时错误:
dyld: Library not loaded: @rpath/TestFramework.framework/TestFramework
Referenced from: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/TestFramework
Reason: no suitable image found. Did find: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/Frameworks/TestFramework.framework/TestFramework: mach-o, but wrong architecture
但是,当我浏览到它抱怨的框架二进制文件时
(/Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/)
然后运行xcrun lipo -info TestFramework 我得到了Non-fat file: TestFramework is architecture: i386 的输出,所以我现在有点迷茫了。它在实际的 iOS 设备上运行良好。
【问题讨论】:
-
“提交到应用商店”和“仅包含 armv7”是互斥的。
-
对不起,armv7 / arm64。无论如何,只是没有模拟器架构。
-
好的,我认为这与您的 Xcode 应用程序目标如何依赖于您的框架目标有关。如果在 Build Phase 中设置正确,那么 Xcode 将为应用程序(即设备或模拟器)构建正确的架构。我认为您需要做的就是将其复制到应用程序包中的正确位置(iOS 应用程序包结构远不如 OSX 应用程序包结构正式,但仍然需要这样做)。这可能需要 Build Phases 选项卡中的自定义脚本。
-
我不确定我是否遵循 - 从教程中,它应该找到与调试或发布有关的框架版本:$(PROJECT_DIR)/lib/$(CONFIGURATION)" 并且调试的应该可以工作两者都有。我挂断的事情是它正在加载的文件肯定只包含 i386 库(也应该包括 armv7)但不知何故只能在设备上运行。
标签: ios objective-c xcode