And*_*ord 16 xcode cocoa-touch objective-c ios watchkit
我正在努力在真正的Apple Watch上调试我的WatchKit扩展/应用程序.使用模拟器调试iPhone App和WatchKit Extension,模拟器没问题:
观察iPhone应用程序和手表应用程序的工作是没有问题的.至少不在模拟器中.
我想在真正的Apple Watch上做同样的事情.但是,当我选择WatchKit应用程序配置文件和我的真实iPhone(而不是模拟器)并单击"运行"时,没有任何反应.这意味着Xcode似乎构建并启动了应用程序,但设备上没有任何反应.Xcode中的状态字段显示:
构建MyApp WatchKit应用程序:MyApp WatchKit扩展
构建MyApp WatchKit应用程序:完成...
在我的iPhone 6上运行MyApp
这是所有的了.没有调试窗口,断点被忽略或不起作用,并且应用程序既不在iPhone上也不在Apple Watch上启动.
我发现了有关在真实设备上调试问题的其他问题(例如此处),但它们都涉及安装和签名问题.在我的情况下,iPhone App和WatchKit App都安装没有任何问题.当我点击Watch上的应用程序图标时,我可以启动并使用该应用程序.问题是我无法调试此过程.
为什么我需要在真实设备上调试该过程?好吧,有一件事我无法使用模拟器进行测试:openParentApplication:reply:
当iPhone应用程序尚未运行时,当应用程序尝试联系iPhone应用程序时会发生什么?这在模拟器中完美运行,但在真实设备上,Watch Apps似乎没有得到iPhone应用程序的回复,只是永远等待.
我已经找到解决这个问题的提示,但是无法调试Watch App并看看代码是如何执行的,我无法确定发生了什么......
And*_*ord 15
谢谢您的回答.我终于设法在我真正的Apple Watch上运行调试(大部分时间).然而,它非常麻烦且不太可靠.评论中没有足够的空间,所以我将使用这个答案来描述我的解决方案.也许它对其他人有帮助:
确保iPhone未锁定.
选择WatchKit App
目标和真正的iPhone并运行项目.
SPErrorInvalidBundleNoGizmoBinaryMessage
.重新启动Xcode并清理Watch App和App目标解决了这个问题.在我的情况下,我想知道iPhone应用application:handleWatchKitExtensionRequest:reply:
程序在以前没有活动时如何处理呼叫.这很重要,因为使用模拟器无法做到这一点.如果应用程序需要很长时间来处理请求,Watch将不会收到有效响应.
按照上述步骤操作后,Xcode仅附加到手表应用程序,并且不会保留iPhone应用程序代码中的断点.要做到这一点,必须手动将调试器连接到手表应用程序发送其呼叫时启动的iPhone应用程序进程.
为了能够附加调试器,我在应用程序主要功能中添加了一个延迟[NSThread sleepForTimeInterval:5]
:
Debug\Attach To Process\Likely Targes\Your iPhone App
Xcode以附加调试器.注意:
您将无法NSLog
从iPhone App 看到输出(或任何控制台输出),因为连接调试器不会重新路由控制台输出.
使用这款令人敬畏的新Apple产品进行快乐测试:-P
我遇到了同样的问题,但为了改善一点调试经验,我通常会重启我的设备几次.尝试重新启动Apple Watch或iPhone.
在从Xcode启动应用程序之前,请确保Apple Watch上的应用程序已完全关闭(例如,未插入加载屏幕).要做到这一点,你必须强制关闭应用程序:输入你的应用程序,按住侧面按钮,直到出现关闭手表的菜单,然后按下同一侧按钮几秒钟直到手表将返回到主屏幕和强制关闭您的应用程序.
现在您可以尝试从Xcode构建和运行应用程序,它应该更可靠地工作.
watchOS 3+:
通过按住侧面按钮(数字表冠下方的按钮)直到出现关机屏幕,然后松开侧面按钮,然后按住数字表冠来完成强制退出.
归档时间: |
|
查看次数: |
5125 次 |
最近记录: |