0

我正在使用 Enterprise Program 分发 iPhone 应用程序。用户从私人位置下载该应用程序,并且没有报告安装它的任何问题。该应用程序对大多数人来说运行良好。

但是,一些用户抱怨应用程序在启动之前崩溃(他们点击图标,放大以启动,然后立即返回主屏幕)。我曾多次亲自观察过这一点。删除应用程序并重新安装它并不能解决大多数人的问题。

这个问题曾经在我自己的设备上发生过,但在我的情况下删除并重新安装应用程序更正了它。引用该问题的设备上没有留下任何日志。

起初,我认为application:didFinishLaunchingWithOptions:花费了太长时间并阻止了应用程序正确加载,但我从该方法中删除了所有可能阻塞的代码,并将其置于后台但没有任何效果。

我怀疑这是一个代码设计问题,所以我重建并提供了一个带有新配置文件的新副本。这也没有效果。

考虑到没有日志(谷歌分析报告或直接在设备上报告),我的印象是应用程序根本没有启动,这是应用程序准备方式的问题。

任何见解将不胜感激!

4

3 回答 3

2

我经历过这样的事情。

在这让我发疯之后,我意识到错误在哪里改变了 Xcode 上运行操作的方案。

将配置切换到“发布”让我在设备上启动应用程序的条件与发布企业版或临时版本时完全相同。

在崩溃点,我能够获得确切的代码行并解决了问题。

于 2015-06-11T21:57:27.417 回答
1

我注意到这开始发生在我所有的 iOS 8+ 设备上,但没有发生在 iOS 7 或 6 上。问题确实出在代码签名上。首先,我需要在代码签名中添加一个 Entitlements.plist 文件(我使用命令行进行代码签名)。如果没有权利文件,该应用程序将不会安装在我的任何设备上。但是,使用权利文件,它会在 iOS8+ 上崩溃。我相信错误是我在 Windows 上使用 C# 创建了一个自动权利文件。Windows 添加了一些 Apple 不同意的行尾。解决方案是使用在 Mac 上创建的权利文件。

作为旁注,请确保权利文件上的捆绑 ID 与用于签署应用程序的配置文件中的捆绑 ID 匹配。

于 2015-04-21T18:21:55.270 回答
1

它不可能是代码签名问题,因为它已正确安装,您是否在您的 didFinishLaunching 中执行任何服务器请求,或者您是否链接了一些静态库,它们可能是导致此问题的原因,无论如何,它发生在您的didFininshLaunchingWithOptions 方法中的 AppDelegate

于 2014-07-23T13:53:02.620 回答