声明:本文主要介绍chrome 的inspect 实现的远程调试。要求 Android 4.4 (KitKat) 以上并能开启webview渲染,chrome 版本 32++(建议最新版本)。大部分内容来自谷歌开发者网站,部分图片来自老版本的chrome,但大体上一样。
如果低于上面的硬件要求可以通过weinre来调试,详情见文章。https://segmentfault.com/a/1190000002608608
本文内容
- 设置您的 Android 设备进行远程调试,并从开发计算机上发现Android设备。
- 从您的开发计算机检查和调试 Android 设备上的实时内容。
- 将 Android 设备上的内容抓屏到您的开发计算机上的 DevTools 实例中。
基础要求:
开发计算机上已安装 Chrome 32 或更高版本。
开发计算机上已安装 USB 驱动程序(如果您使用 Windows)。 确保设备管理器报告正确的 USB 驱动程序
拥有一根可以将您的 Android 设备连接至开发计算机的 USB 电缆。
Android 4.2 或更高版本。
您的 Android 设备上已安装 Chrome(Android 版)。
chrome://inspect/#devices
。注:如果您在发现流程中遇到任何问题,您可以通过在 Android 设备上选择 Settings > Developer Options > Revoke USB Debugging Authorizations 重启该流程。
1、重新加载、聚焦或关闭一个标签
点击 inspect 标签可以查看页面DOM内容以及可以调试页面
2、检查元素
转到您的 DevTools 实例的 Elements 面板,将鼠标悬停在一个元素上以在 Android 设备的视口中突出显示它。
您还可以在 Android 设备屏幕上点按一个元素,以在 Elements 面板中选中它。 点击您的 DevTools 实例上的 Select Element Select (开发者工具面板第一个按钮),然后在您的 Android 设备屏幕上点按此元素。 请注意,Select Element 将在第一次触摸后停用,因此,每次想要使用此功能时您都需要重新启用它。
点按 Toggle Screencast ![Toggle Screencast][screencast]{:.devtools-inline} 以在您的 DevTools 实例中查看 Android 设备的内容。
您可以通过多种方式与抓屏互动:
关于抓屏的一些注意事项:
端口转发使您的 Android 设备可以访问在开发计算机网络服务器上托管的内容。 端口转发通过在映射到开发计算机上 TCP 端口的 Android 设备上创建侦听 TCP 端口的方式工作。端口之间的流量通过 Android 设备与开发计算机之间的 USB 连接传输,所以连接并不取决于您的网络配置。
要启用端口转发,请执行以下操作:
操作步骤
1. 在左侧的 Device port 文本字段中,输入 Android 设备上您想要从其访问网站的 localhost 端口号。例如,如果您想要从 localhost:8000 访问网站,则应输入 8000。
2. 在右侧的 Local address 文本字段中,输入开发计算机网络服务器上运行的您的网站的 IP 地址或主机名,后面紧跟端口号。例如,如果您的网站在 localhost:8080上运行,则应输入 localhost:8080。
3. 点击 Add。端口转发已设置完毕。您可以在该设备位于 Inspect Devices 对话框内的标签上看到端口转发的状态指示器。
要查看内容,请在您的 Android 设备上打开 Chrome,然后转至您在 Device port 中指定的 localhost 端口。 例如,如果您在字段中输入了 8000,则应转至 localhost:8000。
利用自定义域名映射,您可以在 Android 设备上查看当前使用自定义域名的开发计算机上网络服务器中的内容。
例如,假设您的网站使用仅在白名单网域 chrome.devtools 上运行的第三方 JavaScript 库。 因此,您可以在开发计算机上的 hosts 文件中创建条目,将此网域映射到 localhost(如 127.0.0.1 chrome.devtools)。设置自定义域名映射和端口转发后,您将能够在 Android 设备上查看网站,网址为 chrome.devtools。
要映射自定义域名,您必须在开发计算机上运行代理服务器。 代理服务器示例包括 Charles、Squid 和 Fiddler。
要为代理设置端口转发,请执行以下操作:
接下来,您需要配置 Android 设备,以便与代理服务器进行通信。
进行这些设置后,您的设备会将所有请求转发给开发计算机上的代理。 代理会代表您的设备发出请求,这样就可以正确解析对自定义本地域名的请求。
现在,您可以在 Android 设备上访问自定义域名,就像您在开发计算机上访问一样。
如果您的网络服务器正在非标准端口上运行,从 Android 设备请求内容时请务必指定端口。例如,如果网络服务器正在端口 7331 上使用自定义域名 chrome.devtools,您从 Android 设备上查看网站时应使用网址 chrome.devtools:7331。
提示:要恢复正常浏览,与开发计算机断开连接后请务必在您的 Android 设备上还原代理设置。
目标:
Android应用WebView启用 WebView 调试
条件:
- 在 Android 4.4 (KitKat) 或更高版本中,使用 DevTools 可以在原生 Android 应用中调试 WebView 内容。
- 在您的原生 Android 应用中启用 WebView 调试;在 Chrome DevTools 中调试 WebView。
- 通过 chrome://inspect 访问已启用调试的 WebView 列表。
- 调试 WebView 与通过远程调试调试网页相同。
必须从您的应用中启用 WebView 调试。要启用 WebView 调试,请在 WebView 类上调用静态方法 setWebContentsDebuggingEnabled
。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
此设置适用于应用的所有 WebView。
提示:WebView 调试不会受应用清单中 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 一起列示的灰色图形表示 WebView 的大小和相对于设备屏幕的位置。如果您的 WebView 已设置标题,标题也会一起显示。
在 chrome://inspect page 上无法看到您的 WebView?
- 验证已为您的应用启用 WebView 调试。
- 在设备上,打开应用以及您想要调试的 WebView。然后,刷新 chrome://inspect 页面。
X5内核是腾讯QQ浏览器团队基于谷歌的 Blink内核项目开发的浏览服务,腾讯命名为 腾讯浏览服务(TBS,Tencent Browsing Service),基本上腾讯系的应用都是基于此开发的,特点快速、高效、安全、兼容性好。官网地址:https://x5.tencent.com/tbs/index.html
开启调试模式 http://debugx5.qq.com/ ,使用腾讯系应用(微信、手机qq、QQ浏览器、应用宝等)扫一扫下面二维码开启调试模式。
1、在 信息 下选中 TBS settings 开启打开TBS内核Inspector调试功能
2、手机链接USB线,并开启调试模式
3、在chrome 中输入 chrome://inspect/#devices
非腾讯系应用,可以通过TBS Studio 来开启调试。参考官网说明 ,官网地址:https://x5.tencent.com/tbs/guide/debug.html
微信浏览器全面升级至X5 Blink内核,支持远程调试方法同上
微信安卓版客户端 webview 即日起100%放量,全面升级至 X5 Blink 内核,将具有更好的 HTML5/CSS3 支持,更强大的渲染能力。
为此,微信 web 开发者工具同步推出0.5.0版本,继支持测试号、企业号、第三方平台开发者的使用之后,新增支持实时映射手机屏幕到 PC 或者 Mac 上,可以远程调试 X5 Blink 内核上的网页。