iOS9共享扩展无法在Xcode上调试

pen*_*ght 10 xcode ios-app-extension

当我从Xcode为真实设备构建共享扩展时,Xcode随意停止调试.但是当我启动模拟器时,问题不会发生.

环境
Xcode 7.1.1
iOS 9.1

详细信息
当我构建共享扩展时,Xcode显示"已完成在iPhone上运行MobileSafari.app",但Safari无法运行.并且,方形停止按钮是任意灰色的.所以,我自己启动Safari并选择我的扩展和发布.调试部分没有显示任何内容.另外,URL请求不发送Rails服务器.

这是我为真实设备构建共享扩展时的图片. 在此输入图像描述

我不知道为什么真正的设备无法在Xcode上启动共享扩展.
如果有人知道这个问题的答案,请告诉我.

GPR*_*yan 9

通常,您可以通过调试 - >附加到进程或PID并输入共享扩展名来调试共享扩展.从那里你可以在你的设备或模拟器上打开共享扩展,Xcode的调试器应该正确地附加和命中断点.但是,我注意到执行此操作时不会显示日志消息,也不会在调试器视图中填充变量值.

这是我如何使调试正常工作.运行共享扩展方案.当它询问您要运行哪个应用时,请选择"照片"(因为这是您的扩展程序将在其中运行的应用).照片应用随后会在您的设备上启动,您可以继续使用您的扩展程序.然后,Xcode中的调试器应该按预期工作.


Ben*_*ous 0

我也遇到了这个问题,虽然不幸的是我不知道确切的解决方案,也许我可以提供一些可能有帮助的信息。

我(和你一样,从你的屏幕截图来看)正在使用 Cocoapods,Cocoapods 在代码签名后将资源从 pod 复制到应用程序扩展包中。如果没记错的话,这会以某种方式干扰代码签名,从而阻止应用程序在调试器下运行。

我相信,这种情况的症状之一是,Mac 的控制台(或设备的控制台,不记得是哪一个)中出现了日志,上面写着“使用旧的 skool[原文如此] 方法爆破到设备上”。

您可以通过从项目中删除 Cocoapods 或任何需要在编译后复制资源的 pod 来确认这种情况。我认为解决方案是向扩展项目添加某种特殊的构建阶段来复制捆绑资源,并禁用 Cocoapods 默认使用的任何内容。

作为临时解决方案,我认为从设备中删除应用程序应该允许您在首次安装应用程序的运行中附加调试器一次。您还可以尝试删除项目的派生数据。