Mobile 启用webkit远程调试启动移动浏览器

Mobile 启用webkit远程调试启动移动浏览器,mobile,webkit,mobile-safari,remote-debugging,Mobile,Webkit,Mobile Safari,Remote Debugging,保罗·爱尔兰(Paul Irish)和帕维尔·费尔德曼(Pavel Feldman)在会上介绍了新功能——这是偶然的 -- 这是一个好消息,特别是对于移动web开发人员来说。 但我们如何启用它,例如启动IOS模拟器,或者只是在iPhone上运行Safari Mobile?(对于chrome,这通常是在启动时使用--远程调试端口=9222选项来完成的) 我尝试在safari设置中启用开发者模式(settingssafarideveloperDebug Console:ON),但没有成功 我不知道这

保罗·爱尔兰(Paul Irish)和帕维尔·费尔德曼(Pavel Feldman)在会上介绍了新功能——这是偶然的

--

这是一个好消息,特别是对于移动web开发人员来说。 但我们如何启用它,例如启动IOS模拟器,或者只是在iPhone上运行Safari Mobile?(对于chrome,这通常是在启动时使用
--远程调试端口=9222
选项来完成的)

我尝试在safari设置中启用开发者模式(
settings
safari
developer
Debug Console:ON
),但没有成功

我不知道这里的android,但是有人知道苹果(Safari Mobile)或谷歌(android浏览器)什么时候会加入这一新功能,这样我们就可以在移动开发中享受远程调试了吗?

多谢各位


参考:

目前没有任何移动浏览器正在实施webkit远程调试协议。(也许你可以为android定制支持它的版本)

然而,还有weinre,它为您提供了web inspector的远程版本。但是为了支持它,您必须在页面中包含一些代码。(因为它不是浏览器功能)


Thomas指出了一个很好的远程调试资源,但是他指出您需要将代码添加到网页中。严格来说,这不是真的,因为weinre还允许通过bookmarklet进行交互。在页面的一部分(在方便地称为“使用书签”的部分下),它说它应该适用于Android 2.2+和iOS

需要注意的一些相关事项:

  • 它不允许您调试启动错误(必须加载页面才能打开bookmarklet)
  • 如果您失去连接,它似乎不会重新连接(您必须刷新页面才能再次获得连接)
  • 如果你的js已经坏了,那么它也已经坏了
  • 也可以(我自己做的)使用webview从android浏览器“调试”代码。您可以让webview捕获所有方法调用(即console.log)。使用它,您可以捕获并保存消息,或将消息转发给logcat


    与您已经尝试过的方法相关-当您在iOS上启用调试控制台时,您在哪里寻找交互/日志输出?更具体地说,您是否在xCode/iPhone simulator中检查了调试控制台?

    仅仅因为WebKit的一个端口(在本例中为Apple和Chromium)实现了一个功能,并不意味着它在其他地方总是可用的。我在我关于的博客文章中详细地写了这篇文章

    到目前为止,唯一具有远程调试功能的移动WebKit端口是RIM Playbook浏览器

    对于iOS来说,这是很难知道的,因为苹果从来没有提供任何关于其未来产品的信息。至少我们知道iOS5不会有它,因为测试版没有显示任何相关内容

    对于Android来说,它肯定会在未来发布,因为Android用户是其WebKit的新基础。

    了解了如何在模拟器中运行的iOS5上实现这一点。它围绕着调用private
    \u enableMoteInspector
    方法展开

    读一下。总结如下:

    要为Mobile Safari启用此功能,请使用gdb连接到它并调用以下方法:

    MobileSafari_PID=$(ps x | grep "MobileSafari" | grep -v grep | awk '{ print $1 }')
    
    if [ "$MobileSafari_PID" == "" ]; then
      echo "Mobile Safari.app must be running in the Simulator to enable the remote inspector."
    else
    
      cat <<EOM | gdb -quiet > /dev/null
      attach $MobileSafari_PID
      p (void *)[WebView _enableRemoteInspector]
      detach
    EOM
    
    在真正的设备上,它不起作用,可能是因为端口是防火墙的——如果你有越狱设备,你可以绕过它(如果你有,请更新我们)。

    它现在在中受支持。

    Adobe的实用程序(刚刚发布)允许你使用远程调试,而无需向网页中插入任何代码。它与Windows和Mac上的Chrome作为“主”浏览器协同工作,并将每个页面导航同步到运行iOS或Android客户端的任意数量的设备上


    请注意,weinre本身有一定的局限性。例如,您将无法访问“网络”选项卡。

    查看此bash脚本以使用iOS模拟器启动远程检查器:

    iOS 6上的Safari 在iOS6中,您现在可以从Safari 6(仅限OS X)进行远程调试。在设备上,打开设置>Safari>高级>启用Web检查器。打开Safari首选项,高级,选中“在菜单栏中显示开发菜单”。使用USB电缆连接iPhone/iPad。现在,在“开发”菜单栏下,您应该会看到设备的子菜单,其中包含您在设备上的Safari中打开的选项卡

    iOS 7上的Safari 除上述要求外,您还需要Safari 6.1,目前(2013年10月8日)仅作为开发人员的种子提供:

    Android 4上的Chrome 在Android上要复杂一些。在Chrome for Android上进行远程调试的说明如下:
    我还没有找到在Android默认浏览器(v4.04)中启用远程调试的方法。

    是的,该端口在设备上通过防火墙连接,但您可以在应用程序中写入一个简单的代理,并通过另一个端口传输流量。这一要点应该可以帮助您在模拟器中自动启动inpsector的过程。非常有用!太棒了:)谢谢你!仅供参考,您现在还可以在Windows上远程调试mobile Safari,请参阅相关的Google项目?
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // ...Snipped...
      [NSClassFromString(@"WebView") _enableRemoteInspector];
      // ...Snipped...
    }