无法将应用程序部署到 ios 8 设备

Posted

技术标签:

【中文标题】无法将应用程序部署到 ios 8 设备【英文标题】:Can't deploy app to ios 8 device 【发布时间】:2014-09-23 15:48:35 【问题描述】:

刚刚将 iPad Mini 更新到 ios 8,突然无法使用 XCode 6.0.1 在其上调试我的应用程序。 Xcode 中的错误是App installation failedAn unknown error has occurred.。在设备上,该应用仍然是灰色的。

尝试过:

从 ipad 中删除应用程序(之前可以使用) 软重置并重启设备 删除派生数据并清理 重启mac 重新安装xcode 更改捆绑包 ID 和产品名称 重新创建开发证书和配置文件

iOS 6 和 iOS 7 设备运行良好,也可以调试其他项目,但不是这个,所以我越来越绝望。

有什么想法吗?

控制台日志:

23/09/14 18:24:16,617 Xcode[421]: createShadowPath (thread 0x12a2f6000): returning: /var/folders/lq/1z47wljj77gbhhrhc9z_yylw0000gn/C/com.apple.DeveloperTools/6.0.1/Xcode/942f46185227b6e098ea41a4548a0649/e269ac837383a4b805c1e212d18ffe36483ab24a/TDev.app
23/09/14 18:24:16,617 Xcode[421]: createSiblingInPath (thread 0x12a2f6000): returning: /var/folders/lq/1z47wljj77gbhhrhc9z_yylw0000gn/C/com.apple.DeveloperTools/6.0.1/Xcode/942f46185227b6e098ea41a4548a0649/e269ac837383a4b805c1e212d18ffe36483ab24a/ManifestCache.plist
23/09/14 18:24:16,690 Xcode[421]: _AMDeviceCopyInstalledAppInfo (thread 0x12a2f6000): no app info
23/09/14 18:24:16,693 Xcode[421]: AMDeviceSecureInstallApplicationBundle (thread 0x12a2f6000): unable to get installed app info, falling back to old skool install
23/09/14 18:24:16,693 Xcode[421]: AMDeviceSecureInstallApplicationBundle (thread 0x12a2f6000): Blasting the bundle over to the device in an old skool way
23/09/14 18:24:27,005 Xcode[421]: AMDErrorForMobileInstallationCallbackDict (thread 0x114564000): GOT AN ERROR 0xe800003a
23/09/14 18:24:27,032 Xcode[421]: SZConduit: _MonitorResultDispatchFunction:140 (0x0x114564000): Got error from service: InstallationFailed
23/09/14 18:24:27,033 Xcode[421]: _AMDeviceTransferAndInstall (thread 0x12a2f6000): SZConduitSendPathWithPreflight failed: 0xe8008001
23/09/14 18:24:27,051 Xcode[421]: writeDictToFile:1258 ==== Successfully wrote Manifest cache to /var/folders/lq/1z47wljj77gbhhrhc9z_yylw0000gn/C/com.apple.DeveloperTools/6.0.1/Xcode/942f46185227b6e098ea41a4548a0649/e269ac837383a4b805c1e212d18ffe36483ab24a/ManifestCache.plist
23/09/14 18:24:27,053 Xcode[421]: AMDeviceSecureInstallApplicationBundle (thread 0x12a2f6000): returning 0xe8008001

编辑:

似乎重新生成证书是解决方案,但在 Clean 之后也需要一个 Clean Build Folder,这解决了这个问题(至少现在)。

【问题讨论】:

“无法获取已安装的应用信息,回退到旧的 skool 安装”。不知道这意味着什么,但它是一个线索。 (啊苹果) 如果你去 Xcode > Window > Devices > Your Device 它说什么? @codeFi 你到底是什么意思?它显示了设备、型号、ios 8.0。 @Templar 不要介意我的最后一个问题,因为 Xcode 6 不再有“用于开发”按钮。您的设备是否已添加到 Developer Portal 的“设备”选项卡中?如果没有,请添加它并为您的应用生成新的配置文件(开发或分发用于临时测试)。 @codeFi 是的,我几乎每天都在使用它进行调试和临时测试(通过旧的非苹果测试飞行)。 【参考方案1】:

只是补充一下(感谢大家在这里给出的提示)系统地找出原因是我解决这个问题的关键。

使用 Xcode6 中的“设备”窗口然后连接到插入的 iPhone,您可以查看实时日志 - once you have selected the iPhone click on the tiny up-arrow icon at the bottom。在我的情况下,输出如下所示,强烈表明我的一个(自定义)捆绑框架的“无法验证代码签名......”是问题的症结所在。

这让我检查并发现它与过期的证书无关(一切都是最新的),也与任何剩余的 DerivedData 或临时构建文件无关(尽管清理干净总是好事!)

事实上,我的自定义框架的“CFBundleExecutable”有一个错字——所以签名实际上是在抛出一个错误。这不会在 Xcode 中立即报告 - 即使您的嵌入式框架的复选框已打开以“复制代码签名”。尝试在命令行上单独签署一个框架,它会告诉你!

Jul 13 09:40:43 Tims-iPhone installd[2302] <Notice>: 0x10048c000 -[MIClientConnection _doBackgroundInstallationForPath:withOptions:completion:]: Install of "/var/mobile/Media/PublicStaging/miin.app" type Developer requested by streaming_zip_conduit (pid 2303)
Jul 13 09:40:43 Tims-iPhone installd[2302] <Notice>: 0x10048c000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=com.timlukins.miin; Version=1, ShortVersion=1.0>
Jul 13 09:40:44 Tims-iPhone profiled[2107] <Notice>: (Note ) MC: Provisioning profiles changed
Jul 13 09:40:44 Tims-iPhone installd[2302] <Error>:  SecTrustEvaluate  [leaf CriticalExtensions IssuerCommonName]
Jul 13 09:40:44 Tims-iPhone installd[2302] <Error>:  SecTrustEvaluate  [leaf CriticalExtensions IssuerCommonName]
Jul 13 09:40:44 Tims-iPhone installd[2302] <Error>: unrecognized status -67049 from codesigning library
Jul 13 09:40:44 Tims-iPhone installd[2302] <Error>: 0x10048c000 -[MICodeSigningVerifier performValidationWithError:]: 188: Failed to verify code signature of <MIExecutableBundle : path = /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.J7tWkl/extracted/miin.app/Frameworks/libmiincore.framework identifier = com.timlukins.libmiincore type = Framework> : 0xe8008001 (Unknown error)
Jul 13 09:40:44 Tims-iPhone installd[2302] <Error>: 0x10048c000 -[MIInstaller performInstallationWithError:]: Verification stage failed
Jul 13 09:40:44 Tims-iPhone streaming_zip_conduit[2303] <Error>: 0x100484000 __MobileInstallationInstallForLaunchServices_block_invoke240: Returned error Error Domain=MIInstallerErrorDomain Code=13 "Failed to verify code signature of <MIExecutableBundle : path = /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.J7tWkl/extracted/miin.app/Frameworks/libmiincore.framework identifier = com.timlukins.libmiincore type = Framework> : 0xe8008001 (Unknown error)" UserInfo=0x12ee1fa30 LibMISErrorNumber=-402620415, LegacyErrorString=ApplicationVerificationFailed, SourceFileLine=188, FunctionName=-[MICodeSigningVerifier performValidationWithError:], NSLocalizedDescription=Failed to verify code signature of <MIExecutableBundle : path = /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.J7tWkl/extracted/miin.app/Frameworks/libmiincore.framework identifier = com.timlukins.libmiincore type = Framework> : 0xe8008001 (Unknown error)
Jul 13 09:40:44 Tims-iPhone streaming_zip_conduit[2303] <Warning>: ERROR: MobileInstallationInstallForLaunchServices returned nil
Jul 13 09:40:44 Tims-iPhone streaming_zip_conduit[2303] <Warning>: __dispatch_source_read_socket_block_invoke:203: Failed to install application at file:///var/mobile/Media/PublicStaging/miin.app/ : Error Domain=LaunchServicesError Code=0 "The operation couldn’t be completed. (LaunchServicesError error 0.)" UserInfo=0x12ed20140 Error=ApplicationVerificationFailed, ErrorDetail=-402620415, ErrorDescription=Failed to verify code signature of <MIExecutableBundle : path = /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.J7tWkl/extracted/miin.app/Frameworks/libmiincore.framework identifier = com.timlukins.libmiincore type = Framework> : 0xe8008001 (Unknown error)

【讨论】:

太棒了!能够看到确切的原因比一般的“发生未知错误”有用得多。 这真的很有用。与其在黑暗中四处游荡,找出确切的原因是最好的方法。我能够使用这种方法找到导致问题的确切第三方库。【参考方案2】:

我刚刚在 Xcode 7.2 中遇到了这个问题。查看设备控制台日志指向 CocoaPods 中的第 3 方框架。做了一个“pod update”,现在一切都很好。

【讨论】:

【参考方案3】:

我的经验是修复它的价值... Xcode 7.3

我有一个非常烦人的 pod,它已不再使用,因此请确保将其从框架中删除。接下来 - CocoaPods 抱怨正在使用的框架 - 所以请确保我正在运行我拥有的最新 Ruby(在我的情况下为 2.1.2),然后执行以下操作:

    更新的 pod “产品”->“清洁” 选择“产品”->“清洁” 已删除所有派生数据

解决方案有效 - 但我注意到一件事 - 当我第一次尝试这个时,我在尝试 Opt 'Product'-> 'Clean' 时遇到权限错误。因此,“删除“所有”派生数据,而不仅仅是项目......

不知道它为什么起作用,但我想我会分享以防它对某人有所帮助。

【讨论】:

【参考方案4】:

您是否使用任何外部库或 SDK?也许你有一个不支持 iOS 8 的库。

如果我是你,我会创建一个新项目,仅用于测试目的,使用单个视图并检查它是否在我的计算机中的 Xcode 和 iOS 8 中运行。如果它运行正常,那么问题就出在您的实际项目中。

【讨论】:

我通过 CocoaPods 使用了很多。其他带有 1-2 个库的小型测试项目安装良好。由于我没有收到有关丢失文件或错误架构的任何错误,因此并没有真正想到这个选项。明天试试。 圣殿骑士,你解决了吗?如果是这样,你能分享你的解决方案吗?谢谢...祝您编码愉快! 支持第二段。解决方案可以针对不同的情况而有所不同。但它不是通用的解决方案。【参考方案5】:

我遇到了同样的问题,它与配置过程有关。我的项目已连接到两个开发者帐户,其中一个帐户的证书已过期。

为了解决这个问题,我必须删除其中一个帐户并在“构建设置”中选择特定的“签名身份”。我不知道这是否是一项要求,但在此过程中,我删除了“派生数据”项目。

【讨论】:

【参考方案6】:

我浪费了 3 多天,现在我解决了同样的问题。 就我而言,我的项目有 3rd 方框架(我的案例是 Dropbox)。

Xcode 可能需要在“构建阶段/复制文件”中对每个嵌入式框架进行签名。 或者嵌入式代码太旧,无法复制到 Xcode 构建。

【讨论】:

如果 Xcode 需要对每个嵌入式框架进行签名,我们应该怎么做?以下构建命令失败:PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks ~/Library/Developer/Xcode/DerivedData/360-aubdswrybcheuibwsvuvjfhabbuc/Build/Intermediates/360.build/release-iphoneos/360.build/Script-B670D6B48FC872850F1C42CD。 sh(1 次失败)【参考方案7】:

就我而言,问题是我的设备上没有剩余空间。希望对其他人有所帮助。

【讨论】:

【参考方案8】:

在使用 Cocoapods 时,我将再次运行“pod update”。使用 Xcode 7.3 测试。

【讨论】:

【参考方案9】:

在我的情况下,我刚刚更新了可可豆荚,它起作用了。请更新 pod 并再次检查。

【讨论】:

考虑将此作为评论。【参考方案10】:

我刚刚删除了我正在使用的第三方框架。然后重新安装它们。这解决了我的问题。希望这对某人有所帮助。

【讨论】:

【参考方案11】:

如果有人在 iOS 10 中使用用户通知扩展或内容,然后删除了 XCode 为您生成的文件夹/文件。您可能会收到相同的错误:App install failed with An unknown error has occurred

然后转到您的项目目标并删除扩展/内容生成的目标。有时,如果您尝试这样做,XCode 会崩溃。我花了大约一个小时试图找出原因......例如:清理构建文件夹和派生数据文件夹。解决方法是删除与该方案链接的 UserNotification Frameworks。只有这样,我才能删除上述方案。

就我而言,我只需要扩展名,因此我删除了以灰色突出显示的目标。

【讨论】:

以上是关于无法将应用程序部署到 ios 8 设备的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Windows Phone 8.1 应用程序部署到 Windows 10 移动设备?

iOS:部署企业应用程序时,APNs 显然无法识别设备令牌

将 cordova 应用程序部署到连接的设备时无法部署到设备

我可以从 Xcode 将 iOS 5.1 SDK 应用程序部署到运行 iOS 6.0 的设备吗?

部署到 iPhone 设备不适用于 Xamarin.iOS,“没有 iOS 签名身份匹配”

无法在 JetBrains Rider 的物理 iOS 设备上部署 Xamarin 应用程序