【问题标题】:iPhone 4 vs iPhone 5 TestFlight issueiPhone 4 与 iPhone 5 TestFlight 问题
【发布时间】:2013-02-08 18:58:23
【问题描述】:

通过 TestFlight 分发构建。临时构建在 iPhone 5 上运行良好,但会在 iPhone 4 和 4s 上打开然后崩溃。如果通过 Xcode 编译和运行(使用开发配置文件直接到 Phone),则构建运行在 iPhone 5、4s 和 4 上。

有人遇到过这种情况吗?

【问题讨论】:

  • 从手机中获取日志。
  • 来自日志:未能及时启动已用总 CPU 时间(秒):22.910(用户 22.910,系统 0.000),57% CPU 已用应用程序 CPU 时间(秒):17.455,43% CPU
  • 如果您的应用程序在一定时间内没有完成启动(我相信这本质上是从application:DidFinishLaunchingWithOptions: 方法返回),它会被系统杀死。要么你有一个无限循环,要么你试图在该方法中做太多事情。您可能有一个仅影响新(干净)安装的错误,请尝试删除该应用并在您的手机/模拟器上重试。
  • 不是无限的,在 iPhone 5 上可以正常工作,缓存一堆图片
  • 缓存一堆图像当然可以解释它。这将需要一段时间,并且在旧手机上会变慢。将该代码放入单独的线程 (dispatch_async)。

标签: iphone xcode distribution testflight


【解决方案1】:

调试 testflight 错误(或任何其他错误)的第一件事是获取错误日志,并阅读并理解错误消息。在这种情况下,错误是:

failed to launch in time

如果您的应用程序在一定时间内没有完成启动(我相信这基本上是从application:DidFinishLaunchingWithOptions: 方法返回),它会被系统杀死。要么你有一个无限循环,要么你试图在该方法中做太多事情。在这种情况下,应用程序以该方法缓存图像,这显然足以在 iPhone 5 上及时完成,但不是更早的。解决方案是排队一个dispatch_async 调用(参见Dispatch Queues),在后台缓存图像,并从应用启动方法快速返回。

【讨论】:

  • 您的答案已确定,但在我的特定应用程序中,这很困难,因为我需要缓存十几个需要立即可用的图像。我正在考虑阻止 HUD,以便应用程序有机会完全启动。
  • 弹出加载屏幕并使用a semaphore 等待它完成。
  • 还有一件事。你能想到为什么它会直接在 iPhone 4 上构建和工作,而不是通过 TestFLight 吗?
  • 我相信从 XCode 启动时超时会延长,以便考虑调试器。我不认为它完全放弃了,但这是可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多