首页 文章

使用Chrome DevTools调试iOS 6 7 Mobile Safari

提问于
浏览
78

iOS 6内置支持远程调试(1 minute screencast) . 它适用于新的Safari Web Inspector,它似乎是一个1年前的WebKit Inspector分支 . 它错过了一些功能,如JS编辑和WebSocket框架检查 .

Safari的Web检查器确实使用WebKit远程调试协议 . 但是,Safari不使用TCP / HTTP作为传输层,因此使其与Chrome不兼容 .

says Timothy Hatcher (aka Xenon), Apple employe

  • Safari对传输层使用了什么?

  • 我可以从这个神秘的传输层创建一个代理到HTTP,以使其与Chrome DevTools一起使用吗?

2 回答

  • 93

    iOS WebKit Debug Proxy项目启用了此功能 .

    screenshot

    要开始使用,请使用自制软件安装:

    brew install ios-webkit-debug-proxy
    

    运行模拟器(如果正在运行模拟器):

    SIM_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
      "$SIM_DIR/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator" \
      -SimulateApplication \
      $SIM_DIR/SDKs/iPhoneSimulator6.1.sdk/Applications/MobileSafari.app/MobileSafari
    

    运行代理:

    ios_webkit_debug_proxy
    

    检查错误

    在设备上查找错误消息:

    无法连接到锁定 . 退出:没有这样的文件或目录 . 无法附加检查器ios_webkit_debug_proxy

    然后检查设备的提示like this(iOS 7示例:)

    相信当前连接的计算机?

    选择“信任”并尝试重新运行代理:

    ios_webkit_debug_proxy
    

    打开默认的devtools

    然后打开 http://localhost:9221

    默认情况下,DevTools是旧版本(大约2012年3月的Chrome 18) .

    尝试现代的devtools

    由于protocol更改,现代DevTools前端的部件可能无法完全运行 . 你可以尝试打开

    chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/pag‌​e/2
    

    其中 portpage 值是您从 http://localhost:9221 看到的值 . 同样,这可能确实是错误的 .

    ios-webkit-debug-proxy project page阅读更多文档 .


    Update: 这适用于iOS7 as well . Update :通过patrick添加了新的devtools前端说明.. Update :将devtools.html更改为inspector.html for Chrome 45,并通过Scheintod更新了新的 ws hack .

  • 3

    根据https://github.com/andydavies/node-iosdriver

    Safari使用与Chrome相同的调试命令,但在RPC上包装为二进制plist而不是在websockets上包含JSON .

    所以,是的,可以编写代理 .

    我通过查看Safari在连接到MobileSafari检查器时所做的TCP连接找到了this thread,发现它连接到一个名为 webinspectord 的进程,并使用Google搜索:

    # pgrep -lf /Applications/Safari.app
    33170 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_21144617
    # lsof -p 33170 | grep TCP
    Safari  33170 ryan   16u    IPv6 0x799d5f43b472a241       0t0      TCP localhost:54892->localhost:27753 (ESTABLISHED)
    # lsof -i :27753
    COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
    launchd     371 ryan   42u  IPv6 0x799d5f43b472aa01      0t0  TCP localhost:27753 (LISTEN)
    Safari    33170 ryan   16u  IPv6 0x799d5f43b472a241      0t0  TCP localhost:54892->localhost:27753 (ESTABLISHED)
    webinspec 33182 ryan    6u  IPv6 0x799d5f43b472aa01      0t0  TCP localhost:27753 (LISTEN)
    webinspec 33182 ryan    7u  IPv6 0x799d5f43b181a621      0t0  TCP localhost:27753->localhost:54892 (ESTABLISHED)
    # ps p 33182
      PID   TT  STAT      TIME COMMAND
    33182   ??  S      0:00.28 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/usr/libexec/webinspectord
    

相关问题