在 Xcode->Devices->Console 我得到钥匙串权利和配置文件错误,然后我的应用程序关闭

Posted

技术标签:

【中文标题】在 Xcode->Devices->Console 我得到钥匙串权利和配置文件错误,然后我的应用程序关闭【英文标题】:In Xcode->Devices->Console I get keychain entitlement and provisioning profile errors, then my app closes 【发布时间】:2016-08-15 16:27:47 【问题描述】:

当我打开我的应用程序时,它再次关闭(假定已崩溃)。它第一次崩溃时没有连接到我的 MacBook。但是当我附加它并打开 Xcode 时,我看到了这个。无论我回购多少次,Xcode->Devices->View Device Logs 都与此问题无关。所以我打开了 Xcode->Device->Console,它在应用程序“崩溃”时打印了一些东西(如下)。

当我尝试安装调试版本时,我收到了来自 Xcode 的一些关于配置文件或证书之类的投诉。它提出自动修复它。我这样做了。我无法再在重新安装调试版本的 iPhone 上重现崩溃。但这对我的代码错误没有任何意义,因为我的应用程序具有状态,并且在启动时根据其配置文件执行各种不同的操作。当我重新安装调试版本时,它又回到了新状态。

所以我的问题是,下面的控制台信息是否意味着我的应用程序被杀死,不是因为代码错误崩溃,而是因为一些钥匙串或配置文件问题?如果是钥匙串和提供配置文件问题,我的客户安装是否会遭受同样的“崩溃”?

我不是 100% 确定,但我相信这些是临时安装,我认为使用与我的 iTunes 导出相同的签名证书和配置文件。

Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Error>:  SecTrustEvaluate  [leaf IssuerCommonName SubjectCommonName]
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Error>:  SecTrustEvaluate  [leaf IssuerCommonName SubjectCommonName]
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Error>:  SecTrustEvaluate  [leaf IssuerCommonName SubjectCommonName]
Aug 15 12:17:51 iPhone-5-GSM securityd[94] <Error>:  secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Aug 15 12:17:51 iPhone-5-GSM securityd[94] <Error>:  secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Aug 15 12:17:51 iPhone-5-GSM amfid[195] <Error>:  SecTrustEvaluate  [leaf IssuerCommonName SubjectCommonName]
Aug 15 12:17:51 iPhone-5-GSM securityd[94] <Error>:  secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Aug 15 12:17:51 iPhone-5-GSM securityd[94] <Error>:  secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Aug 15 12:17:51 iPhone-5-GSM amfid[195] <Error>:  SecTrustEvaluate  [leaf IssuerCommonName SubjectCommonName]
Aug 15 12:17:51 iPhone-5-GSM amfid[195] <Error>: /private/var/containers/Bundle/Application/00000000-0000-0000-0000-03B9C01C0000/MyApp.app/MyApp not valid: 0xe8008015: A valid provisioning profile for this executable was not found.
Aug 15 12:17:51 iPhone-5-GSM com.apple.xpc.launchd[1] (UIKitApplication:com.MyCompany.MyApp[0xe6e9][249]) <Notice>: Service exited due to signal: Killed: 9
Aug 15 12:17:51 iPhone-5-GSM assertiond[65] <Warning>: Unable to obtain a task name port right for pid 249: (os/kern) failure (5)
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Warning>: Unable to register for exec notifications: No such process
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Warning>: Unable to obtain a task name port right for pid 249: (os/kern) failure (5)
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Warning>: Unable to obtain a task name port right for <FBApplicationProcess: 0x1a58f5c0; com.MyCompany.MyApp; pid: 249>
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Warning>: Application 'UIKitApplication:com.MyCompany.MyApp[0xe6e9]' exited abnormally via signal.
Aug 15 12:17:51 iPhone-5-GSM SpringBoard[48] <Warning>: Application '(null)' exited for an unknown reason.

【问题讨论】:

【参考方案1】:

是的,ios 声明不允许您的应用在该设备上运行,因为没有与应用和设备匹配的有效 iOS 配置文件。

当您询问您的客户时,您是如何将应用部署给他们的?如果他们通过 Apple App Store 获得您的应用程序,他们将不会遇到此问题。该应用程序已使用分发配置文件进行签名,即使您的开发和临时配置文件到期,该配置文件也将继续工作。您无法安装已使用您的应用商店分发配置文件签名的应用,因此您必须以不同方式对其进行签名。

如果您将相同的临时构建发送给客户进行测试,他们会遇到同样的问题。为了修复它,您需要使用新的、有效的临时配置文件重新构建应用程序,并将其重新安装在您需要运行应用程序的任何设备上。

【讨论】:

非常感谢您的评论。我休息了几天,所以回复晚了。我的问题是“我不是 100% 确定,但我相信这些是临时安装,我认为使用与我的 iTunes 导出相同的签名证书和配置文件。”我的意思是我的客户在我将应用程序导出到 iTunes Connect 后从应用程序商店获取应用程序。但是我已经强制配置文件对于发布和分发版本是相同的。我担心这意味着我的临时构建和我的 iTunes Connect 导出都使用相同的配置文件。 不,如果您使用临时构建提交到应用商店,它会被拒绝。当您提交二进制文件时,Apple 会验证代码签名。你应该对你的客户没问题。

以上是关于在 Xcode->Devices->Console 我得到钥匙串权利和配置文件错误,然后我的应用程序关闭的主要内容,如果未能解决你的问题,请参考以下文章

xcode的模拟器位置

无法在 Xcode 中获得开发证书

Xcode 使用手册

如何象征崩溃日志Xcode?

从 Xcode 4.6.3 问题请求 iOS 开发证书

关于打包之后崩溃日志的查看