ios - Xcode 6 错误 - 为 iOS 模拟器构建时出现 "Missing Required Architecture i386"

标签 ios architecture frameworks xcode6 i386

我已经创建了一个自定义的 Objective-C 框架。我想将它导入任何给定的 iOS 项目,并在 iOS 模拟器和实际设备上使用它提供的功能。为了导入框架,我使用应用程序目标中的 Build Phases > Link Binary With Libraries 设置链接它。然后我可以使用以下语句将其导入到我的一个类中:

#import <CustomFramework/CustomFramework.h>

我可以很好地实例化我的框架的类,但是当我尝试在设备上运行我的项目时,我收到以下错误消息:

dyld: Library not loaded: @rpath/CustomFramework.framework/CustomFramework
Referenced from: /var/mobile/Applications/A61E882D-481A-4C0B-B4FD-69F5D24968BF/TestApp.app/TestApp
Reason: image not found

如果我尝试在模拟器上运行它,我会收到不同的错误消息:

ld: warning: ignoring file /Users/user/Desktop/CustomFramework.framework/CustomFramework, missing required architecture i386 in file /Users/user/Desktop/CustomFramework.framework/CustomFramework (2 slices)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CustomFramework", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

当我从框架实例化一个类时会发生这种情况。如果我导入框架但实际上没有使用它,我的应用程序会成功构建。每当我出于某种原因从框架实例化一个类时,它就会出错。

为了让应用程序在设备上构建,我遵循了 this所以回答。我没有链接框架,而是在目标的 Build Phases 设置中添加了一个新的 Copy Files 阶段,将 Destination 设置为 Framework,然后添加了我的框架。

效果很好;但是,我也想在 iOS 模拟器上测试我的应用程序。当我尝试在模拟器上运行我的应用程序时,我仍然收到“缺少必需的架构 i386”错误。我已经尝试了几乎所有我能找到的相关 SO 主题中提出的解决方案,但没有任何东西可以帮助我解决这个问题。

请注意,我正在尝试在一个新的 Xcode 项目中使用我的自定义框架,因此没有任何应用程序/build设置的默认设置发生更改。

如何修复此错误,以便我可以在 iOS 模拟器和项目中包含我的框架的设备上运行我的应用程序?任何见解将不胜感激!

最佳答案

问题是该框架不是为 iOS 模拟器的架构(即 i386)编译的。 Xcode 只编译目标架构的框架,所以如果我为 iOS 模拟器构建框架,它不会在设备上运行,如果我为设备构建框架,它不会在 iOS 模拟器上运行。

在本教程的帮助下,我从头开始创建了我的框架:http://www.raywenderlich.com/65964/create-a-framework-for-ios

多架构构建脚本使我的框架能够在 iOS 模拟器和设备上运行。

关于ios - Xcode 6 错误 - 为 iOS 模拟器构建时出现 "Missing Required Architecture i386",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774768/

相关文章:

asp.net-mvc - 如何构建这个 ASP.NET n 层解决方案?

php - 全栈与非全栈 MVC PHP 框架——有什么区别?

spring bean 上下文配置

frameworks - 如何在 Gstreamer (windows) 中重用 directshow 组件

ios - g++ 与 iOS sysroot 和 xcode 8.1

architecture - 了解虚拟地址和虚拟地址空间

ios - Swift4-将文本字符串插入另一个 View /类中的 TextView 字段

asp.net - ASP.NET 中的成员资格使用什么

ios - 在 Collectionview 中如何根据选择设置颜色?

ios - 配置@IBInspectable 属性检查器控件