注意⚠️:本文为个人学习原理所翻译的文章,文中介绍的方法还未实践验证,不保证有效可用。目前仅进行了原理学习,后续会补充实际操作过程中遇到的问题。

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远程调试工作原理相关推荐

  1. chrome android 远程调试,chrome 远程调试

    方式一: 远程调式手机的chrome浏览器 Chrome DevTools调试移动设备Brower Page Tabs/WebViews 安卓远程调试目前支持所有操作系统(Windows,Mac, L ...

  2. Android远程调试的探索与实现

    作为移动开发者,最头疼的莫过于遇到产品上线以后出现了Bug,但是本地开发环境又无法复现的情况.常见的调查线上棘手问题方式大概如下: 方法 优点 缺点 联系用户安装已添加测试日志的APK 方便定位问题 ...

  3. Android系统Recovery工作原理之使用update.zip升级过程分析(五)

    Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务文章开头我们就提到update.zip包来源有两种,一个 ...

  4. Unity中使用Profiler进行Android远程调试

    Unity中使用Profiler进行Android远程调试 这两天研究了下Profiler进行远程调试Android, 查看内存和CPU使用情况等. 原来其实就研究过, 只是很久不用又忘了, 所以写文 ...

  5. android 版本更新原理,Android系统Recovery工作原理之使用update.zip升级过程分析(二)...

    Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相 ...

  6. Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...

    2019独角兽企业重金招聘Python工程师标准>>>  Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的 ...

  7. PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页

    PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页 最近学习移动端网页开发的时候,遇到了一个问题,如何在真机上看到控制台输出的内容. 虽然现在的桌面浏览器提供了模拟手 ...

  8. Android App的工作原理

    Android App的工作原理 Android系统是基于liunx内核的,但是与传统的基于liunx的pc系统不同, 用户对Android app没有绝对的掌控权.pc系统中, 在应用程序的系统菜单 ...

  9. Android 动画的工作原理

    在android系统中动画分为两种分别是基础动画和属性动画.对于动画的工作原理主要涉及到的是基础动画和属性动画的实现. 本章主要分两大块:基础动画和属性动画 1.基础动画 对于基础动画的实现主要是嵌套 ...

最新文章

  1. easyui图片显示
  2. 财经法规税收征收管理法律制度练习题二
  3. HTML中form和div出现间隙以及页面居中的问题
  4. 闲鱼商品理解和选品,究竟是怎么做的?
  5. ASP.NET 应用程序遭遇Server Application Unavailable问题的解决的方法
  6. 网页关闭(解决window.close在火狐下不兼容问题)
  7. mysql字符集说明
  8. java new string作用_java中直接new String对象?
  9. workunit 的指的工作单元是什么_分频器是做什么用的?
  10. 微信小程序格创校园跑腿小程序v1.1.64+前端
  11. C++学习系列笔记(五)
  12. 靠谱测试人员需要具备BUG洞察能力
  13. 游戏公司2022秋招记录
  14. 如何在 R 中计算 线性模型 SST、SSR 和 SSE
  15. Hook技术(1):Hook技术简介
  16. Elasticsearch教程(19) 详解mapping之keyword
  17. java 正则拼音,用于匹配拼音的正则表达式
  18. windows 远程桌面连接(mstsc) 删除历史记录
  19. 信息隐藏的原理与应用
  20. 用halcon提取衣服徽章

热门文章

  1. ORA-00911: 无效字符 细节一定要注意
  2. echarts实现中国地图各省背景根据数值大小变化的方法
  3. SQL更改表名,数据库名,字段名
  4. tring.Format格式化用法
  5. Verilog的基础知识
  6. JavaWeb——JSP技术
  7. BlockingQueue及其实现
  8. ROUGE 简易安装教程
  9. 【最优化方法】1-最优化方法介绍
  10. 程易科技祝大家新年快乐