热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Chrome开发工具在安卓设备上使用Chrome远程调试功能

在安卓设备上使用Chrome远程调试功能你的网页内容在移动设备上的体验可能和电脑上完全不同。ChromeDevTools

在安卓设备上使用 Chrome 远程调试功能

你的网页内容在移动设备上的体验可能和电脑上完全不同。Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容。

remote-debug-banner

安卓远程调试支持:


  • 在浏览器选项卡中调试网站。

  • 在原生安卓应用中调试网页内容。

  • 将屏幕从你的安卓设备上投影到你的开发机器上。

  • 使用端口转发和虚拟主机映射来让安卓设备访问开发使用的服务器。


需求

要开始远程调试,你需要:


  • 安装 Chrome 32 或者之后的版本。

  • 连接安卓设备用的 USB 线缆。

  • 对于通过浏览器调试:安卓 4.0 以上并且安装了 Chrome for Android。

  • 对于通过应用调试:安卓 4.4 以上并且应用包括可用于调试的 WenView 组件。


提示:远程调试需要你电脑端的 Chrome 版本要高于安卓端的版本。想更好地使用此功能,请使用电脑端的 Chrome Canary (Mac/Windows) 或者 Dev channel 发行版(Linux)。

如果使用远程调试的时候出现了问题,请参考 Troubleshootling。

设置安卓设备

请按照以下说明来设置安卓设备:

1. 打开 USB 调试选项

在安卓设备上,进入设置>开发者选项。

settings-dev-options-on
设置页面的开发者选项

注意:在安卓 4.2 及以后的版本中,默认情况下开发者选项是隐藏的。要启用开发者选项,选择设置>关于手机然后点击版本号7次。

about-phone-build-num

开发者选项中,选中 USB 调试复选框。

usb-debugging-on
在安卓上启用 USB 调试

之后会有一个警告,提示你是否要开启 USB 调试模式。选择 OK

allow-usb-debugging

2. 连接你的设备

将你的安卓设备和电脑用 USB 线连接起来。

注意:如果你在 Windows 下进行开发,那么你需要为你的安卓设备安装驱动。具体可以参考安卓开发者网站上的 OEM USB Drivers


在 Chrome 中找到设备

在安卓设备上设置好远程调试后,在 Chrome 中找到你的设备。

在电脑端的 Chrome 里,在地址栏输入 chrome://inspect。进入后确认 Discover USB devices 已经勾选了:

chrome-discover-usb

**提示**:你也可以从 Chrome menu > More tools > Inspect Devices 来进入 chrome://inspect

在你的设备上,会跳出一个警告,告诉你是否要允许在电脑端进行 USB 调试。选择 OK

rsa-fingerprint
提示:如果希望以后不再弹出系那个管提示,勾选 Always allow from this computer

注意:在远程调试时, Chrome 会阻止你的设备进入休眠状态。该特性对于调试相当有用,但在安全性上有所欠缺。所以在调试的时候要注意看好你的手机!

在电脑端,打开选项卡并启用 WebViews 调试后,chrome://inspect 页面会显示全部已连接的设备。

chrome-inspect-devices
从 chrome://inspect 也卖弄查看已连接的设备

如果从 chrome://inspect 页面查找设备时遇到了问题,请参考 Troubleshooting 章节。

调试远程浏览器

在页面 chrome://inspect 上,你可以加载 DevTools 并且调试你的远程浏览器。

要开始调试,请点击你希望调试的浏览器选项卡下面的 inspect

chrome-inspect-tabs

接着你的电脑会加载新的 DevTools。在新的 DevTools 上,你可以在你的安卓设备上和选中的浏览器实时交互。

remote-debug-overview
通过电脑上的 DevTools 来调试安卓手机上的网页

比如,你可以在你的设备上使用 DevTools 来监审查网页元素:


  • 当你的鼠标悬浮在 Elements 面板中的某个元素上时,DevTools 会在你的设备上高亮显示相关元素。

  • 你也可以点击 审查元素 remote-debug-overview 然后点击设备的屏幕,DevTools 就会在 Elements 面板中让选中的元素高亮显示。


注意:你设备的 Chrome 版本将会决定远程调试中 DevTools 的版本。由于这个原因,你在远程调试时使用的 DevTools 可能和你平常使用的不大一样。


调试提示

下面是使用远程调试功能的一些提示:


  • 按 F5(或者在Mac上 Cmd + r)来重新加载远程页面。

  • 让设备的网络处于打开状态。使用 Network 面板来查看实际移动设备的网络流状态。

  • 使用 Timeline 面板来分析提交数据和 CPU 使用状态。在移动设备上运行的程序通常会比在开发机器上运行的要慢一些。

  • 如果你是在本地的 web 服务器上运行的,使用端口转发或者虚拟主机映射 技术来让设备访问你的站点。


调试 WebViews

在安卓 4.4 及后续版本中,你可以使用 DevTools 来调试原生安卓应用中的 WebView 的内容。

将 WebViews 配置为可调试状态

你的应用程序必须允许调试 WebView。要开启 WebView 调试,在 WebView 类里面调用静态函数 setWebContentsDebuggingEnabled。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}

该设置对该应用中所有的 WebView 都会生效。

提示: WebView 的调试并不会受到应用中 manifest 文件的 debuggable 标签状态的影响。如果你想只有在 debuggable 为 true 时启用 WebView 调试,请在运行的时候测试该标签的状态。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}

在 DevTools 中打开 WebView

chrome://inspect 页面会显示设备中所有可调试的 WebView.

要开始调试,点击你想调试的 WebView 下面的 inspect。接下来就像使用远程浏览器选项卡一样使用 DevTools。

webview-debugging

使用 Chrome DevTools 来调试远程安卓 Webview

在 WebView 中列出的灰色图片表示其大小以及相对设备屏幕的大小。如果你的 WebView 有设置名称,那么其名称也会列出来。

实时截屏

要在两个屏幕间不断转移注意力是相当不方便的。Screencast 将你设备的屏幕显示在开发机上的 DevTools 右侧。你也可以在 screencast 中与你的设备进行交互。

在 KitKat 4.4.3,screencast 既可以给浏览器选项卡使用也可以给安卓 WebView 使用。

开启截屏会话

要开启 screecast,点击远程调试窗口右侧上方的 Screencast webview-debugging 图标。

screencast-icon-location
Screecast 图标

Screencast 面板在左侧打开并且显示设备屏幕的实时状况。

screencast
在你的电脑上与你的安卓设备实时进行交互

截屏只会显示网页内容。该截屏的透明部分涵盖了多功能框、设备键盘以及其他设备接口。

注意:由于截屏会连续捕获帧,会造成不小的性能开销。如果你的测试是对帧速率敏感的,最好禁用截屏。


使用截屏来与设备交互

当你使用截屏来互动的时候,点击会被转换为触屏,会在设备上触发适当的触控事件。电脑端的按键会发送到设备,这样就可以避免使用大拇指来打字。

其他的 DevTools 工作也可以在截屏上使用。例如,要检查元素,点击 Inspect Element screencast 然后在截屏内点击就可以查看网页源码中对应部分。

screencast
要模拟一个缩放手势,拖动鼠标的时候按住 Shift。要在页面上滚动,使用你的触控板或者鼠标滚轮,也可以拖动鼠标指针。

端口转发

你的手机不一定所有时候都能直接连接到你开发用的服务器。他们可能处于不同的网络环境下,此外,你也可能在一个受限的企业网络下进行开发。

Chrome for Android 上的端口转发使得在移动设备上测试你所开发的站点变得轻松很多。其工作原理是在你的移动设备上创建一个监听 TCP 端口,该端口映射到你的开发机器上的一个指定 TCP 端口。这些端口之间的流量通过 USB 来传输,因此该连接不需要依赖于你的网络环境。

要启用端口转发:


  1. 在你开发用的机器上打开 chrome://inspect

  2. 点击 Port Forwarding。下面是端口转发的设置页面。
    chrome-port-forwarding

  3. Device port 后面输入你的安卓设备希望监听的端口号(默认是8080)。

  4. Host 后面输入你的 web 应用运行环境的 IP 地址(或者主机名称)以及端口号。

  5. 检查 Enable port forwarding 是否已经勾选。

  6. 点击 Done 来完成设置。

port-forwarding-dialog

端口转发设置

当端口转发开启成功时,chrome://inspect 页面的端口状态将会显示为绿色。

port-forwarding-device
使用端口转发来在你的安卓设备上查看本地网页

现在你可以打开一个新的 Chrome for Android 选项卡并且在你的设备上查看本地服务器的内容。

虚拟主机映射

当你在 localhost 域名上进行开发的时候,端口转发非常有效。但是有些情况下你可能需要是哟高自定义的本地域名。

例如,假设你正在使用的第三方 Javascript SDk 只有在白名单上的域名中才能运行。所以你需要在你的端口文件中加入一个进入点,比如 127.0.0.1 production.com。又或者你需要在你的 web 服务器上通过虚拟主机来设置特定的域名。

如果你想让你的手机能够访问到你自定域名上的内容,你可以结合端口转发和代理服务器技术。代理会把来自设备上的请求映射到主机上的相应位置。

在代理上使用端口转发

虚拟主机映射要求你在主机上开启一个代理服务器。所有来自你的安卓设备的请求都会发送到这个代理上。

要在代理上使用端口转发:


  1. 在主机上安装代理软件,比如 Charles Proxy 或者 Squid。

  2. 运行代理服务器,要记住该服务器使用的端口号。


    注意:代理服务器和你开发用的服务器必须在不同的端口上运行.




  3. 在 Chrome 浏览器中,进入 chrome://inspect

  4. 点击 Port forwarding。下面是端口转发设置页面。
    chrome-virtual-host-mapping

  5. Device port 后面输入你的安卓设备希望监听的端口号。使用安卓允许的端口,比如 9000.

  6. Host 处输入 localhost:XXXX,其中 XXXX 是你的代理服务器占用的端口号。

  7. 检查 Enable port forwarding 是否已经勾选。

  8. 点击 Done 来完成设置。

port-forward-to-proxy
代理服务器的端口转发

在你的设备上设置代理

你的安卓设备需要和主机上的代理服务器交互。

要在你的设备上设置代理:


  1. 选择 设置 > WiFi

  2. 长按你当前连接的网络。


    注意:代理设置适用于所有网络.




  3. 点击修改网络

  4. 选择高级设置
    代理设置页面如下:
    phone-proxy-settings

  5. 点击代理菜单并选择手动

  6. 代理主机名处输入 localhost

  7. 代理端口号处输入 9000。

  8. 点击保存

通过这些设定,你的设备会将它所有的请求都发给代理服务器。该代理代表你的设备发出新的请求,故而对你本地特定域名的请求会被合理地解析。

现在你就可以像在主机上那样在 Chrome for Android 上加载本地域名了。

virtual-host-mapping
使用虚拟主机映射技术来在安卓设备上访问特定的本地域名

提示:要恢复正常的浏览模式,在断开连接后将设备上的代理设置还原就可以了。

常见问题


我在 chrome://inspect 页面无法看到我的设备



  • 如果你在 Windows 下进行开发,请确认你是否安装好了你的设备所对应的驱动。安卓开发者网站上的 OEM USB Drivers 可供参考。

  • 确认你的设备是否直接或者通过集线器连接到了你的主机上。

  • 确认设备上 USB 调试模式 有没有打开。记得在提示是否允许 USB 调试的时候选择是。

  • 在电脑上打开 chrome://inspect 并确认 Discover USB devices 有没有勾选。

  • 远程调试要求你电脑上的 Chrome 版本高于安卓设备的。尽量使用 Chrome Canary(Mac/Windows)或者 Dev channel 发行版(Linux)。

如果你仍然无法看到你的设备,请断开设备与主机的连接。然后在你的设备上,打开 设置 > 开发者选项。选择撤销 USB 调试授权。然后重新尝试设置设备以及在 Chrome 中查找设备。

在 chrome://inspect 页面中我无法看到我的浏览器选项卡



  • 在你的设备中,打开 Chrome 浏览器并进入到你想调试的页面。然后刷新 chrome://inspect 页面。


我无法在 chrome://inspect 页面中看到我的 WebView



  • 确认WebView 调试模式在你的应用中已经启用。

  • 在你的设备上,启动应用并打开你想调试的 WebView。然后,刷新 chrome://inspect 页面。


在我的安卓设备上我无法访问 web 服务器



  • 如果是网络限制条件导致你的设备无法连接到开发用的服务器,请尝试端口转发或者虚拟主机映射。

最后,如果远程调试仍然无法工作,你可以使用 Android SDK 中的 adb 二进制包将你的工作流恢复到最近的状态。

更多信息


远程调试和 ADB

在远程调试浏览器选项卡以及 WebView 的时候你不要设置 ADB 或者 ADB 插件。Android 上的远程调试现在是标准 Chrome DevTools 的一部分。在所有的操作系统上它都可以使用:Windows,Mac,Linux 以及 Chrome OS。

如果你在使用远程调试的时候遇到了问题,你可以尝试通过 Android SDK 提供的 adb 二进制包来使用传统工作流。


注意:你的安卓设备和 Chrome 之间的连接可能会中断 adb 连接。在建立 adb 连接前,取消 chrome://inspect 上对 Discover USB devices 的勾选。




推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
author-avatar
更东陌飞絮蒙蒙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有