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



我创建了一个自定义的Objective-C框架。我想将其导入任何给定的iOS项目,并在iOS模拟器和实际设备上使用其提供的功能。要导入框架,我使用应用程序目标中的构建阶段>将二进制与库链接设置将其链接。然后,我可以用以下语句将其导入到我的一个类中:

#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)

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

为了让应用程序在设备上构建,我遵循了这个SO答案。我没有链接框架,而是在目标的构建阶段设置中添加了一个新的复制文件阶段,将目标设置为框架,然后添加了我的框架。

这很管用;不过,我也想在iOS模拟器上测试我的应用程序。当我尝试在模拟器上运行我的应用程序时,我仍然会收到"缺少所需的体系结构i386"错误。我已经尝试了在我能找到的几乎每一个相关SO主题中提出的解决方案,但没有任何东西能帮助我解决这个问题。

请注意,我正试图在一个新的Xcode项目中使用我的自定义框架,因此应用程序/构建设置都没有从默认设置更改。

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

问题是该框架不是为iOS模拟器的体系结构i386编译的。Xcode只为目标架构编译一个框架,所以如果我为iOS模拟器构建框架,它就不会在设备上工作,如果我为设备构建框架,也不会在iOS模拟器上工作。

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

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

在为模拟器构建时,我在Xcode 7.1中遇到了同样的问题。其他人说它在Xcode 8.2.1下对他们有效,所以我试着在那里构建/运行,它成功了。在我的项目中,我不需要改变目标或任何事情。

所以,如果可以的话,试着升级你的Xcode,你可能也会得到额外的错误修复。

相关内容

最新更新