从xcode3切换到xcode4 - 无法将程序加载到较旧的iPod Touch上

Tho*_*ler 11 ios xcode4

可能重复:
iPhone应用程序无法在旧设备上运行(3G,3GS,...)

我有一个类似的问题(iPhone应用程序不能在旧设备(3G,3GS,...)上运行)但该页面上的解决方法对我没有任何作用.我一直在XCode3上开发iOS应用程序,并在运行iOS 4.2.1的旧版第二代iPod Touch上进行测试.过去几天尝试使用XCode4.

我能够使用模拟器在XCode4下构建和运行应用程序,我最初是在XCode3下开发的,以及全新的XCode4创建的"Hello World"类型.但是,当我尝试将其中一个放在实际的硬件上时,它会失败而几乎不会出现错误消息.XCode4中的调试窗口没有显示任何错误.XCode顶部中间的活动/状态指示器从"建立[AppName]"直接变为"完成运行[AppName]",但应用程序永远不会在设备上传输或运行.

如果我通过Organizer查看iPod的控制台,我会看到一堆错误,例如:

Thu Jun 16 15:17:56 unknown lockdownd [16] <Error>:2ff68000 handle_connection:无法从Xcode接收USB消息#6.杀死连接

Thu Jun 16 15:17:56未知com.apple.mobile.lockdown [16] <Notice>:无法接收消息大小

我猜它与此有关.我已经尝试从我的Mac上拔掉所有其他USB设备,但没有任何区别.尝试重新启动设备和Mac,但再次没有区别.

我已将iOS部署目标调整为4.2,所以我认为那里没有任何问题.设备显示在管理器中,带有绿点和有效的未过期配置文件.在代码签名属性下,它看起来像:

Code Signing Entity     Don't Code Sign
    Debug               Don't Code Sign
        Any iOS SDK     iPhone Developer (currently matches...[profile I have installed])
    Release             Don't Code Sign
        Any iOS SDK     iPhone Developer (currently matches...[profile I have installed])
Run Code Online (Sandbox Code Playgroud)

设备本身在Schemes下拉列表中显示为:

[DeviceName](4.2.1覆盖Base SDK到5.0)

其他人遇到类似问题或有任何建议吗?

Ada*_*ght 7

只是为了推广Thomas对答案的评论,这可能是因为针对您的设备不支持的CPU架构.iPhone和iPhone 3G(以及同代的iPod touch)不支持armv7.将"Archiectures"构建设置设置为包含"armv6",以确保生成的fat二进制包含armv6代码.

  • 我遇到了这个问题,而且我需要更新的另一件事是`info.plist`中的`Required device capabilities`.它提到了`armv7`,所以我删除了那个有用的条目. (3认同)

sha*_*her 5

我遇到了与XCode 4.1.1和Ipod Touch 2nd gen相同的问题.我从其中一个模板开始,无法在我的硬件上运行它.在stackoverflow上找到所有答案,但最好在一个地方拥有所有必要的步骤:

  1. 您必须在项目设置(Build Settings选项卡)中将armv6添加到Architectures.你可以把它设置为"armv6 $(ARCHS_STANDARD_32_BIT)"或"armv6 armv7",没关系.$(ARCHS_STANDARD_32_BIT)只是一个变量,它等于最新XCode中的"armv7".

  2. 不要更改Base SDK,"最新的iOS(iOS5.0)"没问题.在"摘要"下,将"部署目标"更改为4.0或您希望作为最低版本的任何iOS版本.

  3. Xcode 4中较新的模板在Info.plist中有一个标准设置,您必须更改它.搜索"所需的设备功能"并删除"armv7".

如果您正在执行步骤1 + 2但忘记了第3步,则设备日志中会出现"无法接收USB消息"错误,并且在XCode中没有错误消息.为什么会这样做,而不是向您显示提示您"所需设备功能"的错误消息是一个不同的问题.

简而言之:随着iOS 4.3的更新,Apple开始放弃对armv6平台的支持.较新的硬件使用不同的指令集armv7运行.如果您想支持带有XCode 4的iOS 4,您应该确保通过上述步骤正确构建armv6项目.


jsc*_*idt 2

看起来您已经安装了 iOS 5.0 SDK。我读得对吗?如果是这样,则受 Apple 开发者 NDA 管辖,不应在此讨论。我会在开发者论坛上发帖。

您是否有其他运行 4.2.1 的设备可以与您安装的 Xcode 配合使用?您还有其他设备可以与您安装的 Xcode 配合使用吗?