一年多以前,我在公司做了一个项目,与Three20和iOS3.1.3合作。 高达4. *,它适用于一些iPhone。我没有必要纠正任何事情,甚至不需要重新编译包。甚至后来iPhone4的Retina-Display也没有出现任何问题。
现在在iOS5上,ipa不再适用了。所以我不得不“重新设置”整个事情。
iOS3 - >五 XCode 3.2 - > 4.2 Three20(旧) - > 1.09(从这里下载zip:https://github.com/facebook/three20)
经过多次尝试,我想要一个清晰的状态。所以我在项目设置中删除了旧的Three20-things,并简单地集成了它,如下所述: http://three20.info/article/2011-03-10-Xcode4-Support 试。
现在我得到了:
检查依赖关系
为架构'armv6'选择了不支持的编译器'GCC 4.2' 为架构'armv7'选择了不支持的编译器'GCC 4.2'
在之前的尝试中,我只是将每个Three20-Module中的编译器更改为Apple LLVM 4.2并删除所有arm6-reminings,因为最古老的iPhone现在使用的是带有5.0.1的3Gs。 3G可以使用以前工作的旧ipa。 这只会将错误更改为其他错误。
那么,是否有人对这些问题感到满意?
编辑: 我删除所有armv6出现后,“令人惊讶”只有第二个
为架构'armv7'选择了不支持的编译器'GCC 4.2'
似乎......原则上没有任何线索,但是:为归档工作构建和为模拟器构建现在都可以工作。只有我无法部署真正的iPhone 4 5.0.1。
答案 0 :(得分:3)
我之前在其他项目中看到了这个问题。根据我的经验,xCode经常与旧项目竞争,特别是与其他项目/框架相关联的大项目。
'官方'方式; 强>
找到C / C ++ / Objective-C'的编译器设置'构建选项'类别。
将编译器从GCC 4.2更改为支持的编译器。 (现在:Apple LLVM或LLVM GCC)
这种方法可能适用于您,也可能不适合您。 这可能是我有限的理解,但似乎在某些情况下,旧设置会延续下去'无法通过GUI访问,但它们仍然可能导致问题。此外,如果此错误出现在框架中而不是项目中,那么您就不能幸运了,因为您无法始终更改这些错误的设置。
在那种情况下:
肮脏的方式;
使用' grep'要找到不正确的设置,应该在.pbxproj文件中。打开项目的命令行,然后执行:
grep -r "GCC_VERSION" * | grep 4.2
你会找到这样的行:
GCC_VERSION = 4.2;
在您喜欢的文本编辑器中打开文件,然后更改为:
GCC_VERSION = com.apple.compilers.llvmgcc42;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
如果这没有帮助;
在太多版本的xCode之间转换项目后,最终它实际上会节省您开始使用干净的平板,打开一个新的空xCode项目,并手动拖入旧项目中的所有代码的时间。
答案 1 :(得分:1)
确保您也更改了扩展程序的编译器设置。如果它仍然显示“不支持的编译器”,您可能忘记在三个子项目中的一个中更改它。
另外,检查在Architectures
下是否同时拥有armv6和armv7您可以发送您拥有的构建设置的屏幕截图吗?
答案 2 :(得分:0)
我解决了这个问题,删除了Three20文件夹中的旧“Build”文件夹。