在Google I/O 2011: Chrome Dev Tools Reloaded,保罗爱尔兰和帕维尔费尔德曼介绍了新的remote debugging功能 - 该功能正在通过included into webkit .
这是个好消息,特别是对于移动网络开发者 . 但是我们如何启用它,例如启动IOS模拟器,或者只是在iPhone上运行Safari Mobile? (对于chrome,这通常在启动时使用 --remote-debugging-port=9222
选项完成) .
我尝试在safari设置中启用开发人员模式( Settings
> Safari
> Developer
> Debug Console: ON
)但没有成功......
我不知道这里的android,但 does anyone know when Apple (Safari Mobile) or Google (android's browser) will include this new feature so we can enjoy remote-debugging in mobile development?
谢谢 .
参考:http://paulirish.com/2011/a-re-introduction-to-the-chrome-developer-tools/#comment-63113
8 回答
目前还没有移动浏览器实现webkit远程调试协议 . (也许你可以获得支持它的android的自定义构建)
然而,有weinre,它为您提供了一个远程版本的Web检查器 . 但是您必须在页面中包含一些代码才能支持它 . (因为它不是浏览器功能) .
Weinre website
Weinre github repo
Safari on iOS 6 在iOS6中,您现在可以从Safari 6(仅限OS X)进行远程调试 . 在设备上,打开“设置”>“Safari”>“高级”>“启用Web检查器” . 打开Safari首选项,高级,检查"Show Develop menu in menu bar" . 使用USB线连接iPhone / iPad . 现在,在“开发”菜单栏下,您应该获得设备的子菜单,其中包含您在设备上的Safari中打开的选项卡 .
Safari on iOS 7 除上述要求外,您还需要Safari 6.1,目前(2013年10月8日)仅供开发人员使用:https://developer.apple.com/downloads/index.action?name=Safari%206.1
Chrome on Android 4 在Android上有点复杂 . 有关在Android版Chrome上进行远程调试的说明:https://developers.google.com/chrome/mobile/docs/debugging我还没有找到在Android默认浏览器(v4.04)中启用远程调试的方法 .
看一下这个bash脚本,用iOS模拟器启动远程检查器:https://gist.github.com/2241976
它现在在Chrome for Android中得到支持 .
仅仅因为某个功能在WebKit的一个端口(在本例中为Apple和Chromium)中实现,并不意味着它总是在其他地方可用 . 我在关于different WebKit ports implementation的博文中详细写了这个 .
到目前为止,唯一具有远程调试功能的移动WebKit端口是RIM Playbook浏览器 .
对于iOS,很难知道,因为Apple没有提供有关其未来产品的任何信息 . 至少我们知道iOS 5不会有它,因为beta版本没有显示任何相关内容 .
对于Android,它肯定会在未来的版本中出现,因为Android人员将adopting Chromium作为其WebKit的新基础 .
Nathan de Vries想出了如何在模拟器中运行的iOS5上执行此操作 . 它围绕调用私有
_enableRemoteInspector
方法 .阅读 . 摘要如下:
要为Mobile Safari启用此功能,请使用gdb附加到它并调用方法:
科幻
然后访问检查员
http://localhost:9999/
.使用嵌入式
UIWebView
,启用它如下:在一个真实的设备上它不起作用,可能是因为该端口是防火墙 - 如果你有一个越狱设备,你可以解决(如果你这样做,请更新我们) .
Thomas指出了一个很好的远程调试资源,但是他说你需要将代码添加到网页中 . 这并不严格,因为我们还允许通过bookmarklet进行交互 . 部分向下here(在方便地称为"Using a bookmarklet"的部分下),它说它应该适用于Android 2.2和iOS .
一些相关的事项需要注意:
它不允许您调试启动错误(必须加载页面才能打开书签) .
如果丢失连接似乎没有重新连接(您必须刷新页面才能再次 Build 连接) .
如果你的js已经坏了,它也会被打破 .
也可以(我自己完成)使用webview从android浏览器“调试”代码 . 您可以让webview捕获所有方法调用(即console.log) . 使用它可以捕获并保存或转发消息到logcat .
与您已经尝试过的方法相关 - 当您在iOS上启用调试控制台时,您在哪里寻找交互/日志记录输出?更具体地说,您是否在xCode / iPhone模拟器中检查了调试控制台?
Adobe的Shadow实用程序(刚刚发布)允许您使用_1030858远程调试,而无需在网页中注入任何代码 . 它适用于Windows和Mac上的Chrome作为"master"浏览器,并且会将每个页面导航同步到运行iOS或Android客户端的任意数量的设备 .
请注意,我们自己有点受限 . 例如,您将无法访问“网络”选项卡 .