Отладка iOS 6+7 Mobile Safari с помощью Chrome DevTools
iOS 6 поставляется со встроенной поддержкой удаленной отладки (1 минута скринкаст). Он хорошо играет с новым веб-инспектором Safari, который, похоже, является 1-летней вилкой инспектора WebKit. Он пропускает некоторые функции, такие как редактирование JS и проверка кадров WebSocket.
веб-инспектор Safari использует протокол удаленной отладки WebKit. Однако Safari не использует TCP/HTTP в качестве транспортного уровня, что делает его несовместимым с Хром.
говорит Тимоти Хэтчер (он же ксенон), сотрудник Apple
- что Safari использует для транспортного уровня?
- могу ли я сделать прокси из этого таинственного транспортного уровня в HTTP, чтобы он работал с Chrome DevTools?
2 ответов:
The iOS WebKit Debug Proxy проект позволяет это.
чтобы начать работу, установите с 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
открыть devtools по умолчанию
откройте
http://localhost:9221
DevTools, по умолчанию, более старая версия (от Chrome 18 около марта 2012).
попробуйте современные devtools
из-за протокол изменения, части современный интерфейс DevTools может не работать полностью. Вы можете попробовать, открыв
chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/page/2
здесь
port
иpage
значения-это значения, которые вы видите изhttp://localhost:9221
. Опять же, это действительно может быть ошибка.читать больше документов на страница проекта ios-webkit-debug-proxy.
обновление: это работает с iOS7 также. обновление: добавлены новые инструкции DevTools frontend через Патрик.. обновление: изменить в инструментах разработчика.HTML для инспектора.HTML-код для Chrome 45 и новая
ws
взломать через Scheintod.
согласно https://github.com/andydavies/node-iosdriver,
Safari использует те же команды отладки, что и Chrome, но обернутые как двоичные plists над RPC, а не JSON над websockets.
Так что, да, можно было бы написать прокси.
нашел этой теме глядя на то, что TCP-соединения Safari делал при подключении к инспектору MobileSafari, видя, что он был подключен к a процесс называется
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
Comments