让Xcode 生成的ipa支持老的iOS设备(armv6)

来源:互联网 发布:新浪邮箱smtp端口号 编辑:程序博客网 时间:2024/04/28 22:10


让Xcode 生成的ipa支持老的iOS设备(armv6)--(发生未知错误(0xE8003FFE))

  • 作者 firedragonpzy
  • 7 九月, 2012
  • 暂无评论

今天,突然来了个应用程序不能安装,郁闷啊,搜索“发生未知错误(0xE8003FFE)”,都是出现什么ipod设置或者itunes的东西,没有发表与之相关的。现在发表此文,与大家分享。下面的文档是我知道发生错误的原因后又搜索了一篇文章,供大家学习。以下是错误提示信息及解决。错误原因是发生错误的设备是老设备,而你的应用程序不支持老设备,你按照下面的解决方案调整一下就ok。

错误信息:应用程序"firedragonpzy"未安装在“firedragonpzy的ipod“上,因为发生未知错误(0xE8003FFE)

解决方案:这几天遇到一个非常奇怪的问题,基于Xcode 4.2开发的app,导出的ipa安装包不能安装到iPod Touch 2上。Touch2固件版本是4.2.1,已越狱。iTunes、91手机助手、同步推试过了都不行。但是其他ipa文件可以成功安装到Touch2上。而Xcode 4.2生成的ipa包在iPhone 4、iPhone 3GS、iPod Touch 4都能安装成功并顺利运行,无论固件什么版本。初步分析的结果就是Xcode 4.2生成的app不支持Touch2。这几天找了一些朋友帮我测试ipa安装包,问一些有iOS开发经验的朋友,最终有个朋友提醒我Xcode 4.2中,Project->Build Settings->Architectures->Release设置有关,经过修改,问题终于解决了,谢谢这位朋友!

原因分析:Xcode 4.2的Architectures设置默认只有armv7,也就是新的iOS设备,包括iPhone 3GS, iPhone 4, iPhone 4s, iPad, iPad2等,而iPhone, iPhone 3G, iPod Touch, iPod Touch 2属于armv6架构。

解决方法:将Architectures设置为armv6 armv7,如下图所示:

修改前:

修改后:

这样设置后生成的ipa安装包就可以支持老的iOS设备了。

另外,还要把Info设置中的Required device capabilitiess删掉,这样提交到AppStore后才会正确显示兼容老的iOS设备。

拓展阅读:
升级到Xcode4以后,你会发现许多程序无法在2代设备(有些3代设备,比如iTouch 3实际上仍然是2代的硬件)上运行了,并且Xcode4仅仅“Running…”就直接“Finished…”了,无论是Xcode控制台还是设备日志中,都没有任何提示。

注意:2代和3代的区别在于cpu架构。2代设备使用ARMv6架构cpu,3代设备使用ARMv7架构cpu。 iPhone 2G/3G,iPod 1G/2G属于ARMv6架构(2代),iPhone3GS/4, iPod 3G,iPad属于ARMv7架构(3代)。

stackoverflow上有关于这个的帖子,其中shapecatcher的答案是最准确的:

http://stackoverflow.com/questions/6378228/switching-from-xcode3-to-xcode4-cant-load-programs-onto-older-ipod-touch

1、打开Target的Build Settings,找到Architectures选项,将其从“$(ARCHS_STANDARD_32_BIT)”修改为“armv6 $(ARCHS_STANDARD_32_BIT)”。注意大小写是敏感的。“$(ARCHS_STANDARD_32_BIT)”是一个变量,实际上等同于armv7。

2、Base SDK不需要改变,仍然是Lastest iOS。

3、打开Target的info,找到Required device capabilities,将下面的armv7删除。这个选项是Xcode4自己添加在工程中的默认设置,如果不去掉它,第1步-第2步的工作是无法生效的。

摘自(有改动):http://www.cnblogs.com/bobli/archive/2011/11/09/2242190.html

0 0
原创粉丝点击