随着iPhone 5和其他armv7s设备现在出现,存在与现有的(闭源)的兼容性问题第三方框架如乱舞其没有该较新的体系结构建。
一种选择是等待,直到他们发布一个新的版本,但我希望有可能是一个编译器标志或东西,我可以在我的Xcode项目中使用,它可以让链接器知道不能指望从这个框架armv7s架构,并且使用的ARMv7代替。 请问像这样的东西存在吗?
随着iPhone 5和其他armv7s设备现在出现,存在与现有的(闭源)的兼容性问题第三方框架如乱舞其没有该较新的体系结构建。
一种选择是等待,直到他们发布一个新的版本,但我希望有可能是一个编译器标志或东西,我可以在我的Xcode项目中使用,它可以让链接器知道不能指望从这个框架armv7s架构,并且使用的ARMv7代替。 请问像这样的东西存在吗?
这不是可以加载一个框架,其中不包括目标架构。
你可以做的是只船一ARMv7的应用程序,直到框架被更新。 该应用程序仍然会在iPhone 5的工作,只是不使用它提供了最新的性能优化。
或者,如果您可以在没有框架,住在新的架构你可以薄弱环节吧。 但是,那么你需要在你的代码到处都用的东西,从框架,以检查它是否被加载。
曾经有在GCC,链接器标志allow_sub_type_mismatches
,这将让你混合和链接库匹配ARM架构的版本,但他们似乎已经采取了远在最新版本的Xcode。
然而,这实际上可以以不同的方式砍死左右; 使框架,查看其内容,在十六进制编辑器打开它的内部实际的代码库文件,并执行以下操作更换所有的副本:
CEFAEDFE 0C000000 09000000
至
CEFAEDFE 0C000000 0B000000
什么你基本上做的是改变每个编码对象内部的头部将其标识为ARMv7s而非ARMv7的代码 - 指令集是向后兼容的(或者看起来是,无论如何),所以它应该与这个黑客运行,即使罚款虽然我不得不承认,我们不会知道,对于某些直到我们真正有机会来测试它在iPhone 5。
无论如何,一旦你已经修改了该框架,只需两个版本到项目,并链接到每个架构一个合适的。 您可能还能够通过使用创建一个新的单一框架lipo
合并修改,原来的图书馆。