web-dev-qa-db-ja.com

Chrome DevToolsを使用してiOS 6 + 7 Mobile Safariをデバッグする

iOS 6には、リモートデバッグの組み込みサポートが付属しています( 1 minutes screencast )。これは、WebKit Inspectorの1年前のフォークと思われる新しいSafari Web InspectorでNiceを果たしています。 JS編集やWebSocketフレーム検査などの一部の機能が欠落しています。

SafariのWebインスペクターは、WebKitリモートデバッグプロトコルを使用します。ただし、Safariはトランスポート層としてTCP/HTTPを使用しないため、Chromeとの互換性がありません。

Timothy Hatcher(別名キセノン)、Apple employe

  • Safariはトランスポートレイヤーに何を使用しますか?
  • この不思議なトランスポート層からHTTPへのプロキシを作成して、Chrome DevToolsで動作するようにできますか?
78
NVI

iOS WebKit Debug Proxy プロジェクトはこれを有効にします。

screenshot

開始するには、homebrewを使用してインストールします。

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

エラーを確認する

デバイスでエラーメッセージを探します。

Lockdowndに接続できませんでした。終了:そのようなファイルまたはディレクトリはありません。インスペクターios_webkit_debug_proxyを接続できません

次に、デバイスのプロンプトを確認します このように (iOS 7の例:)

現在接続されているコンピューターを信頼しますか?

「信頼」を選択して、プロキシを再実行してください。

ios_webkit_debug_proxy

デフォルトの開発ツールを開く

次に、http://localhost:9221

DevToolsは、デフォルトでは古いバージョンです(Chrome 2012年3月18日頃から)。

最新の開発ツールをお試しください

protocol の変更により、最新のDevToolsフロントエンドの一部が完全に機能しない場合があります。開けて試すことができます

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

ここで、portおよびpageの値は、http://localhost:9221。繰り返しますが、これは確かにバグがあるかもしれません。

ios-webkit-debug-proxyプロジェクトページ でドキュメントを参照してください。


更新:これは iOS7も同様 で動作します。 Updatepatrick ..を介して新しいdevtoolsフロントエンド命令を追加しました。Update:devtools.htmlをインスペクターに変更しました.html for Chrome 45 、およびScheintodを介した新しいwsハック。

93
NVI

https://github.com/andydavies/node-iosdriver によると、

SafariはChromeと同じデバッグコマンドを使用しますが、websocket上のJSONではなく、RPC上のバイナリプライストとしてラップされます。

それで、はい、プロキシを書くことができます。

このスレッド MobileSafariインスペクターに接続しているときにSafariがTCP接続を作成し、webinspectordと呼ばれるプロセスに接続されていることを確認して、 :

# 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
3
also