作为前端开发,我们每天都会使用ChromeDevTools来调试Chrome网页,但其实它也可以远程调试Android手机网页。那么ChromeDevtools是如何远程调试Android网页的呢?它的实现原理是什么?今天我们就来看看:远程调试Android网页将Android手机用数据线连接电脑,在手机设置中开启USB调试:然后在chrome中打开chrome://inspect页面,勾选DiscoverUSBdevices(默认勾选Selected):此时下方会出现提示:Pleaseacceptthedebuggingsessiononthedevice点击确定,调试会话将建立:所有可以调试的网页将被下面列出:浏览器中的网页,或者APP调试包的webview的网页都会列出来。点击inspect调试:可以检查元素:可以打断点:也可以用Performance来分析性能:基本支持调试PC网页的各种功能。这样就可以愉快的调试Android手机网页了。但是在这个过程中你可能会遇到这样的问题,打开的窗口是空白的或者404:这是因为调试目标可能是任意一个chrome版本,所以ChromeDevtools自然需要使用对应的版本,所以需要动态下载。动态下载的devtools网页在google域名下,需要科学上网。科学上网后,可以正常下载ChromeDevTools进行调试,不会出现白屏或404的情况。但也不一定每次都科学上网。一个调试目标只需要下载一次ChromeDevtools的代码,就可以一直使用。我们了解了ChromeDevTools是如何调试Android网页的,那么它的原理是什么呢?ChromeDevTools的原理ChromeDevTools被设计成一个独立于Chrome的架构。两者通过WebSocket进行通信,并设计了一个特殊的通信协议:ChromeDevToolsProtocol。这样,只要连接上CDP协议的ws服务器,就可以使用ChromeDevTools进行调试,因此可以使用ChromeDevTools调试浏览器网页,调试Node.js,调试Electron等。自然也可以远程调试安卓手机的网页。只要打开USB调试,手机和电脑就可以通过网络进行通信,从而实现基于CDP的调试。这个CDP的调试协议是json格式的。如果你想看它传输了什么,你可以:下载金丝雀版本的chrome:在ChromeDevTools的更多工具中打开ProtocolMonitor面板:然后你可以在ProtocolMonitor面板看到CDP协议的所有数据都是交换:这是调试的原则。综上所述,ChromeDevTools和Chrome是独立的架构。两者通过WebSocket进行通信。通信协议是ChromeDevToolsProtocol。在ProtocolMonitor的金丝雀版本中可以看到CDP的数据交互。由于这个实现原理,ChromeDevTools可以调试许多目标,包括USB设备。开启USB调试后,在chrome://inspect页面可以看到可调试的网页,点击对应的网页进行调试。需要注意的是,调试的目标浏览器必须对应使用的ChromeDevTools版本,所以第一次调试会先下载ChromeDevTools,需要访问google域名。如果没有科学上网,就会出现白屏和404问题。了解了调试原理后,ChromeDevTools调试Android网页的过程,你就可以愉快的远程调试Android手机的网页了。
