在Xcode 8中运行单元测试会导致错误"无法加载插入的库' ... / IDEBundleInjection'因为找不到图像"

时间:2016-10-03 21:17:51

标签: xcode unit-testing code-signing ios10 xcode8

在Xcode 8中测试我的iOS 10应用程序时,我突然遇到错误。

dyld: could not load inserted library
'__PLATFORMS__/iPhoneOS.platform/Developer/Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection' 
because image not found

该应用程序的测试之前成功运行。然后我删除了与项目一起创建的框架UI测试用例类,因此这可能导致了问题(不知何故)。我已经重新创建了这个课程,但问题仍然存在。

错误消息的确切指示是什么以及如何解决问题,即再次成功运行应用程序的单元测试。

UPDATE 必须有另一个根案例,因为如果我在Xcode中创建另一个(空)单视图应用程序项目并运行其单元测试,则会发生同样的错误。

只有在设备上运行单元测试时才会出现错误,而不是在模拟器上运行。

Apple对类似报告的回复

更新 This表示该错误与代码签名有关。应用程序本身在同一设备上运行良好,那么在我的情况下怎么会出现代码签名问题呢?

2 个答案:

答案 0 :(得分:2)

逐一尝试:

  1. 尝试创建一个新的UnitTest目标,复制所有内容并删除旧目标。

  2. 在“常规”选项卡面板中,不要让团队“无”。选择你的团队。并从“设置”中选择正确的代码签名标识。它被设置为非默认值 - 更改为“IOS Developer”以用于Debug设置条目。

  3. 从诊断中禁用“启用Guard malloc”以在设备中运行应用程序。

  4. 这可能是因为Xcode挂载错误的DeveloperImage。如果您打开设置 - >开发人员,您将看到“启用UIAutomation”和其他人缺失。修复:

    (A)将所有文件夹从“/Applications/Xcode8.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport”除“10.0(12A4297e)”移至安全的地方 (B)重启手机 (C)将手机连接到xCode 8 (D)在DeviceSupport中恢复文件夹

    这是唯一帮助我的事情。即使在ios10上重新闪烁也无济于事。

  5. 这是旧的,但它可能对您有所帮助:在目标的常规选项卡中,有一个嵌入式二进制文件字段。当您添加框架时,崩溃就会得到解决。

  6. Apple Developer论坛上的参考是https://devforums.apple.com/message/991384#991384

    祝你好运!

答案 1 :(得分:0)

Xcode测试基础架构中有一个重启机制,用于检测测试期间的崩溃,并尝试重新开始测试以完成剩余的测试。在测试崩溃后,该机制如何设置DYLD_INSERT_LIBRARIES可能存在问题 - 请在https://bugreport.apple.com提交报告并尽可能附加您的项目。