【问题标题】:XCode fails to deploy iPhone app to iPhone 3GSXCode 无法将 iPhone 应用程序部署到 iPhone 3GS
【发布时间】:2011-03-22 19:43:41
【问题描述】:

所以我构建了我的 iPhone 应用程序,它在模拟器中运行良好,因此我想将它部署到我的 iPhone 上进行最后一轮测试,然后再使用我的分发配置文件进行公开 beta 测试。我已经做过很多次了,从来都不是问题。然而,自从上次测试运行以来,我升级了我的 iPhone (iOS 4) 和 XCode (Version 4 DP2),所以问题可能出在那儿。

构建过程运行良好且成功 - 之后 XCode 尝试将其部署到我的 iPhone 并失败并出现简单的“发生未知错误”。对此我感到很困惑,我查看了 system.log,它是这样写的:

7 月 29 日 17:44:18 Xcode[12893]:AMDeviceStartHouseArrestService(线程 0x120e8e000):设备出现错误:ApplicationLookupFailed

7 月 29 日 17:44:19 Xcode[12893]: call_and_response (thread 0x120e8e000): GOT AN ERROR 0xe800003a

7 月 29 日 17:44:19 Xcode[12893]: perform_command (thread 0x120e8e000): 与服务代理通信时出错:0xe8008001

7 月 29 日 17:44:19 Xcode[12893]:AMDeviceSecureInstallApplication(线程 0x120e8e000):无法在设备上安装包:e8008001

7 月 29 日 17:44:19 Xcode[12893]:“/SourceCache/DTDeviceKit/DTDeviceKit-232.24/DTDeviceKit/DTDeviceKit_Utilities.m”在 468 的结果:0xE8008001

7 月 29 日 17:44:19 Xcode[12893]:“/SourceCache/IDEiPhoneSupport/IDEiPhoneSupport-45/Classes/DVTiPhoneMobileDeviceIO.m”在 265 处的结果:0xE8008001

正如我猜测的那样,这是一个相当罕见的问题(因此是“未知错误”),我将非常感谢有关如何调试这件事的任何指示。我不期望有解决方案或任何东西(尽管如果有人遇到类似问题并帮助我提供确切的解决方案,我将不胜感激;))但也许你们中的一些人有一个好主意。

从日志中的两行判断,设备和与服务代理的通信出现错误,我猜这可能是与 iPhone 本身的连接问题 - 但看到与 iTunes 同步并且所有“正常”的东西都可以正常工作,我无法弄清楚可能是什么问题。

在此先感谢您帮助我。

更新

所以,环顾四周后,我在 XCode Organizer 的设备控制台上找到了这个:

7 月 29 日星期四 22:40:00 Roberts-3GS SCHelper[38] : 0x104e60 {port = 0x382b, caller = SpringBoard(42):com.apple.preferences, path = /Library/Preferences/SystemConfiguration/preferences.plist }

7 月 29 日星期四 22:40:22 Roberts-3GS 已安装 [960]:来自协同设计库的无法识别状态 -25293

7 月 29 日星期四 22:40:22 Roberts-3GS installd[960] : 00503000 verify_signer_identity: 无法复制验证签名:-402620415

7 月 29 日星期四 22:40:22 Roberts-3GS installd[960] : 00503000 preflight_application_install: 无法在 /var/tmp/install_staging.0DuNfz/landu.app 验证可执行文件

7 月 29 日星期四 22:40:22 Roberts-3GS installd[960] : 00503000 install_application: 无法预检应用程序安装

7 月 29 日星期四 22:40:22 Roberts-3GS mobile_installation_proxy[961]:handle_install:安装失败

7 月 29 日星期四 22:40:22 Roberts-3GS installd[960] : 00503000 handle_install: API 失败

Thu Jul 29 22:40:22 Roberts-3GS installd[960] : 00503000 send_message: 发送 64 字节的 mach 消息失败:10000003

7 月 29 日星期四 22:40:22 Roberts-3GS installd[960] : 00503000 send_error: 无法向客户端发送错误响应

所以看来 iPhone 无法验证代码签名的签名。我想我会重新创建一些证书,明天再试一次。我会让你知道结果如何。

【问题讨论】:

  • 所以只是为了让遇到同样问题的每个人都知道最终解决了这个问题:我刚刚通过开发者网站重新创建了我的开发者证书和我的配置文件并重新安装了两者。经过一个干净的构建周期后,一切都按预期工作(在 XCode4 中),现在一切都很好。因此,如果您遇到此类问题,请查看设备控制台,如果它看起来像我的那样,那就是要走的路。

标签: iphone xcode deployment xcode4


【解决方案1】:

Xcode 4 不能用于分发构建。为此,您需要在 Xcode 3.2.3 上进行构建。

来自 Xcode 4 自述文件:

请注意:Xcode 4 是测试版软件。继续使用 Xcode 3.2.x 进行生产开发。此版本的 Xcode 4 与 Xcode 3.2.x 项目文件兼容。

【讨论】:

  • 嗨,史蒂夫,感谢您的回答。虽然我确实没有读过那篇文章,但我应该注意到我确实尝试过通过 XCode 3.2.4 部署我的应用程序。不幸的是,它产生了相同的结果。
  • 我看到您已经解决了您的问题,但我会指出 Xcode 3.2.4 是 iOS 4.1 测试版,也不适用于分发构建。
【解决方案2】:

首先,看这里:http://9mmedia.com/blog/?p=229

然后:

您是否尝试过重新创建配置文件并重新安装,然后与 iTunes 同步?另外,请确保您的 get-task-allow 在 Entitlements.plist 中被选中

来自另一个帖子:

get-task-allow 登录到应用程序后,允许其他进程(如调试器)附加到您的应用程序。分发配置文件要求关闭此值,而开发配置文件要求打开此值(否则 Xcode 将永远无法启动并附加到您的应用程序)。

我已经完成了您所描述的更新到 iOS4 和 XCode4 DP2(顺便说一句,这很棒),并且没有遇到这个问题。听起来要么是安装错误,要么是在安装过程中损坏或放错了地方。

【讨论】:

  • 感谢您的回答 - 你说得对:DP2 很棒 :) 重新创建配置文件并重新安装它们是我第一次尝试解决这个问题 - 所以是的,我已经尝试过了。 Entitlements-plist 中的 get-task-allow 键也已打开。我查看了您链接到的博客文章,我的所有 ID 都是相同的。
  • 你的手机越狱了吗? 0xE8008001 出现在很多谷歌点击中,因为它只是越狱手机上的问题。
  • 是的,我也注意到了 :) 不,它没有越狱,也没有经过任何形式的调整。
  • 嗯,那我就难住了。如果您说它是从 iOS4 开始的,您可能想尝试恢复或重新安装(特别是如果您还没有 4.0.1)。这些bug让我很生气。抱歉,我无法提供更多帮助!
  • 嘿,不用担心。我很感激。我在调试过程中更进一步(发布了对初始问题的更新)。我现在的猜测是代码签名有问题。
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多