繁体   English   中英

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

[英]Why can't I build for some specific iOS simulators?

我有一个使用我自己的框架的应用程序。 我为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 / ...'模拟器。

解决了。 问题来自我的框架,由于某种原因,它不是为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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM