chrome android远程调试工作原理
注意⚠️:本文为个人学习原理所翻译的文章,文中介绍的方法还未实践验证,不保证有效可用。目前仅进行了原理学习,后续会补充实际操作过程中遇到的问题。
chrome android远程调试工作原理
Chrome Android 允许通过桌面对web页面进行远程调试。调试使用了devtools-protocol协议[1]。本文介绍桌面chrome与android chrome间是如何建立连接。
android手机在开发者模式下并启用了usb调试后,chrome android允许通过unix domain sockets对chrome进行调试。可以通过socket进行连接,获取打开的页面列表。每个页面都有
一个调试url,可以用来调试这个页面。
查看unix domain socket
找到unix domain socket/proc/net/unix 包含了unix domain sockets列表。Chrome 通过_devtools_remote为名称创建sockets(参见 devtools_adb_bridge.cc[2])
可以通过下列命令查看:
adb shell cat /proc/shell/unix | grep _devtools_remote
输出样式如下:
00000000: 00000002 00000000 00010000 0001 01 107909 @chrome_devtools_remote_8985
00000000: 00000002 00000000 00010000 0001 01 87977 @chrome_devtools_remote
建立adb转发
接着连接abstract socket并找到打开页面的列表。通过下列adb命令建立转发。
adb forward tcp:4000 localabstract:chrome_devtools_remote_8985
端口4000是随机选择的,也可是其它端口。上述的命令使adb通过usb 将localhost,tcp端口为4000的请求转发到 名为chrome_devtools_remote_8985 abstract socket上。
获取页面列表
接着可以连接到4000端口获取页面列表。
curl localhost:4000/json
可以看到如下输出
[ {"description": "","devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@165554/devtools.html?ws=localhost:4000/devtools/page/0","id": "0","title": "https://www.google.com/url?sa=t&source=web&rct=j&ei=aEPpUq3iIMrFoATNqYDwDQ&url=http://m.youtube.com/watch%3Fv%3DoHg5SJYRHA0&cd=3&ved=0CC8QtwIwAg&usg=AFQjCNE6GowB7mL72VHPMCbZco5bTpnXbA&sig2=GBopoUdf_D-kofy7N2c80w","type": "page","url": "https://www.google.com/url?sa=t&source=web&rct=j&ei=aEPpUq3iIMrFoATNqYDwDQ&url=http://m.youtube.com/watch%3Fv%3DoHg5SJYRHA0&cd=3&ved=0CC8QtwIwAg&usg=AFQjCNE6GowB7mL72VHPMCbZco5bTpnXbA&sig2=GBopoUdf_D-kofy7N2c80w","webSocketDebuggerUrl": "ws://localhost:4000/devtools/page/0"
} ]
通过webSocketDebuggerUrl使用remote debug protocol与页面通信。
总结
通过adb与手机chrome建立连接,并通过chrome devtool protocol实现调试。
原文地址
https://www.girish.in/how-remote-debugging-works-in-chrome/
参考资料
[1]https://chromedevtools.github.io/devtools-protocol/
[2]https://chromium.googlesource.com/chromium/chromium/+/c8916317b5ebe621b2deaac26eabac21da8d6329/chrome/browser/devtools/devtools_adb_bridge.cc
[3]https://stackoverflow.com/questions/20263821/remote-webkit-debugging-with-android-4-4-webviews/20282005#20282005
chrome android远程调试工作原理相关推荐
- chrome android 远程调试,chrome 远程调试
方式一: 远程调式手机的chrome浏览器 Chrome DevTools调试移动设备Brower Page Tabs/WebViews 安卓远程调试目前支持所有操作系统(Windows,Mac, L ...
- Android远程调试的探索与实现
作为移动开发者,最头疼的莫过于遇到产品上线以后出现了Bug,但是本地开发环境又无法复现的情况.常见的调查线上棘手问题方式大概如下: 方法 优点 缺点 联系用户安装已添加测试日志的APK 方便定位问题 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)
Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务文章开头我们就提到update.zip包来源有两种,一个 ...
- Unity中使用Profiler进行Android远程调试
Unity中使用Profiler进行Android远程调试 这两天研究了下Profiler进行远程调试Android, 查看内存和CPU使用情况等. 原来其实就研究过, 只是很久不用又忘了, 所以写文 ...
- android 版本更新原理,Android系统Recovery工作原理之使用update.zip升级过程分析(二)...
Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...
2019独角兽企业重金招聘Python工程师标准>>> Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的 ...
- PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页
PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页 最近学习移动端网页开发的时候,遇到了一个问题,如何在真机上看到控制台输出的内容. 虽然现在的桌面浏览器提供了模拟手 ...
- Android App的工作原理
Android App的工作原理 Android系统是基于liunx内核的,但是与传统的基于liunx的pc系统不同, 用户对Android app没有绝对的掌控权.pc系统中, 在应用程序的系统菜单 ...
- Android 动画的工作原理
在android系统中动画分为两种分别是基础动画和属性动画.对于动画的工作原理主要涉及到的是基础动画和属性动画的实现. 本章主要分两大块:基础动画和属性动画 1.基础动画 对于基础动画的实现主要是嵌套 ...
最新文章
- easyui图片显示
- 财经法规税收征收管理法律制度练习题二
- HTML中form和div出现间隙以及页面居中的问题
- 闲鱼商品理解和选品,究竟是怎么做的?
- ASP.NET 应用程序遭遇Server Application Unavailable问题的解决的方法
- 网页关闭(解决window.close在火狐下不兼容问题)
- mysql字符集说明
- java new string作用_java中直接new String对象?
- workunit 的指的工作单元是什么_分频器是做什么用的?
- 微信小程序格创校园跑腿小程序v1.1.64+前端
- C++学习系列笔记(五)
- 靠谱测试人员需要具备BUG洞察能力
- 游戏公司2022秋招记录
- 如何在 R 中计算 线性模型 SST、SSR 和 SSE
- Hook技术(1):Hook技术简介
- Elasticsearch教程(19) 详解mapping之keyword
- java 正则拼音,用于匹配拼音的正则表达式
- windows 远程桌面连接(mstsc) 删除历史记录
- 信息隐藏的原理与应用
- 用halcon提取衣服徽章