iOS - 为什么在模拟器上构建失败,但在设备/通用iOS设备上成功?

时间:2016-05-24 13:12:51

标签: ios objective-c iphone

我有一个疑问,当我们设置目标设备并构建一个正常的工作项目然后它建立成功,但当我将目标更改为模拟器或通用iOS设备时,同样的项目然后它失败。当我在模拟器上构建一个工作项目时,我已经共享了屏幕截图以获取错误信息。这个为什么相同的代码构建+在iphone设备或通用iOS设备上完美运行的原因是什么?另一方面在模拟器上失败了?请注意,我已经添加了我项目中必要的框架。任何建议都会很棒。多谢你们。

http://i.stack.imgur.com/CJTim.png

3 个答案:

答案 0 :(得分:1)

这意味着错过了支持框架

代表_OBJC_CLASS_$_SKStoreProductViewController

添加 StoreKit框架

代表_OBJC_CLASS_$_asidentifiermanager

添加 AdSupport.framework

代表_OBJC_CLASS_$_CMMotionManager

添加

CoreMotion.framework

答案 1 :(得分:1)

每当遇到此类问题时,我建议您使用' lipo' Apple的工具。你这样称呼它:

/usr/bin/lipo -i <path-to-libraray-file>.a

回复将是:

Architectures in the fat file: <the-lib>.a are: armv7 arm64 

我想在你的情况下,提供ASIdentifierManager 的库只会显示 armv7 arm64 ,它们是真正需要运行的设备,但不是模拟器所需的i386。

所以问题是这个库的来源。如果你是从第三方获得的,请他们提供一个“胖子”。库包含所有必需的体系结构,包括一个用于i386

的体系结构

答案 2 :(得分:0)

你的mac(模拟器)在i386架构上运行。如果你为i386编译静态库,你也可以在模拟器上使用它们。

尝试添加&#34; i386&#34;进入&#34;有效架构&#34;