为什么我不能为某些特定的iOS模拟器构建?

时间:2015-05-28 11:07:52

标签: ios objective-c xcode build ios-simulator

我有一个使用自己的框架的应用程序。我为i386做了框架构建以及arm,一切都很好。我的应用程序曾经在每个模拟器上运行,并且可以在商店中使用。

现在,出于某种原因,我无法在某些模拟器上运行我的应用程序。 有效的模拟器:

  • iPhone 4s
  • iPhone 5
  • iPad 2
  • iPad Retina

不起作用的模拟器:

  • iPhone 5S
  • iPhone 6
  • iPhone 6S
  • iPad Air
  • 可调整大小的iPhone
  • 可调整大小的iPad

错误是找不到我框架中的* .h文件。

我想知道什么可以阻止找到这个文件,或者更确切地说某些模拟器没有使用什么搜索路径。必须有一些项目/目标属性与这些模拟器类型相关,除了我找不到任何会产生影响的东西。

在我的代码中,我搜索了我会做出的任何差异,但它们只是关于UI组件的iOS版本。我也使用TARGET_IPHONE_SIMULATOR,但模拟器之间不应该有任何区别。

仅供参考,我的应用程序版本包括Watch Kit。它正在Apple Watch以及连接到iPhone 5(外部显示器)的Apple Watch模拟器上工作。它可能是相关的......

非常感谢任何帮助!

编辑:完整的错误说明:

/Users/me/sources/myApp/iOS/trunk/include/someFile.h:18:10:' dir / someOtherFile.h'找不到文件

编辑:所有目标中的头文件:

我的框架和包含我的框架的任何.h的每个文件都只是myApp的一部分,我注意不要在myApp.watchkit或myApp.watchkitextension中添加任何引用

编辑:尝试了解决方案:

  • Xcode重启
  • 重新启动
  • + ALT + SHIFT + K
  • 删除衍生数据

编辑:64位:

我在项目文件中使用了类似的路径: $(FRAMEWORK_SEARCH_PATHS)frameworkName_$(CURRENT_ARCH).framework/Versions/A/Headers 例如,它指的是' /searchPathFolder/frameworkName_i386.framework /...&# 39;当我为模拟器构建时。

1 个答案:

答案 0 :(得分:3)

解决。问题来自我的框架,由于某种原因,它不是为64位模拟器版本构建的。

为了使一切工作正常,该项目需要4个版本的框架: x86 (32位模拟器), x64 (64位模拟器), armv7 (32位设备)和 arm64 (64位设备)。

然后使用项目属性,在构建时忽略不必要的框架:

ignoring file myFramework_i386.framework/myFramework_i386, file was built for archive which is not the architecture being linked (arm64)