为什么我不能为某些特定的 iOS 模拟器构建?
Why can't I build for some specific iOS simulators?
我有一个使用我自己的框架的应用程序。我为 i386 和 arm 构建了框架,一切都很好。我的应用曾经在每个模拟器上 运行 并且在商店中可用。
现在,出于某种原因,我无法在某些模拟器上 运行 我的应用程序。
可用的模拟器:
- iPhone4s
- iPhone 5
- iPad 2
- iPad视网膜
不起作用的模拟器:
- iPhone5S
- iPhone 6
- iPhone6S
- iPad空气
- 可调整大小iPhone
- 可调整大小iPad
错误是找不到来自我的框架的 *.h 文件。
我想知道什么可以阻止找到这个文件,或者更确切地说,某些模拟器不使用什么搜索路径。肯定有一些 project/target 属性 与这些模拟器类型有关,除了我找不到任何会有所作为的东西。
在我的代码中,我搜索了我会做出的任何不同,但它们只是关于 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)
我有一个使用我自己的框架的应用程序。我为 i386 和 arm 构建了框架,一切都很好。我的应用曾经在每个模拟器上 运行 并且在商店中可用。
现在,出于某种原因,我无法在某些模拟器上 运行 我的应用程序。 可用的模拟器:
- iPhone4s
- iPhone 5
- iPad 2
- iPad视网膜
不起作用的模拟器:
- iPhone5S
- iPhone 6
- iPhone6S
- iPad空气
- 可调整大小iPhone
- 可调整大小iPad
错误是找不到来自我的框架的 *.h 文件。
我想知道什么可以阻止找到这个文件,或者更确切地说,某些模拟器不使用什么搜索路径。肯定有一些 project/target 属性 与这些模拟器类型有关,除了我找不到任何会有所作为的东西。
在我的代码中,我搜索了我会做出的任何不同,但它们只是关于 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)