企业分布式iOS应用程序在启动完成之前不一致地崩溃

时间:2014-07-22 14:49:20

标签: ios xcode code-signing provisioning-profile enterprise-distribution

我正在使用企业计划分发iPhone应用程序。用户从私人位置下载应用程序,并且没有报告安装它的任何问题。该应用程序适用于大多数人。

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

此问题发生在我自己的设备上一次,但删除并重新安装应用程序在我的情况下更正了它。引用该问题的设备上没有剩余日志。

起初,我在考虑应用程序:didFinishLaunchingWithOptions:花费的时间太长并阻止应用程序正确加载,但我从该方法中取出了所有可能阻塞的代码,并对其进行了后台处理没有效果。

我怀疑这是一个代码签名问题,因此我重新构建并提供了一个新的配置文件。这也没有效果。

考虑到没有日志(由Google Analytics报告或直接在设备上报告),我认为应用程序根本没有启动,并且这是应用程序准备方式的问题。

任何见解都将受到赞赏!

3 个答案:

答案 0 :(得分:1)

它可能不是一个代码签名问题,因为它正确安装,你是否在didFinishLaunching中执行任何服务器请求,或者你链接了一些静态库,他们可能是这个问题的原因,无论如何,它直接来自你的AppDelegate中的didFininshLaunchingWithOptions方法

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我经历过这样的事情。

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

将配置切换为"发布"让我在设备上启动应用程序的条件与为entrerprise或ad-hoc版本发布时完全相同。

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