如何在台式机上调试 Android 的原生浏览器(不是 Chrome)?

Posted

技术标签:

【中文标题】如何在台式机上调试 Android 的原生浏览器(不是 Chrome)?【英文标题】:How to debug Android's native browser (not Chrome) on a desktop machine? 【发布时间】:2015-02-15 05:09:19 【问题描述】:

我可以使用 Google 的 Chrome DevTools (chrome://inspect) 成功调试在移动设备上运行的 Web 应用程序的前端我的移动设备使用 Chrome 的浏览器(使用端口转发)。我想知道是否可以使用 android 的本机浏览器做同样的事情,我的意思是预装在 Android 中的一个浏览器,它的应用程序启动器看起来像这样,只是为了更清楚,:-)

有没有办法做到这一点?因为当我在 chrome://inspect 中使用此浏览器打开选项卡时,我当然没有打开打开的选项卡,也无法检查我的设备从本机浏览器查看的内容。

我需要以某种方式做到这一点,因为我发现了一些专门绑定到本机浏览器的 UI 相关问题(CSS、JS),实际上在 chrome 中一切都很好,但在本机浏览器上没有。

我也尝试过使用weinre,发现它非常有用,但我只能在局域网的上下文中使用它,这意味着我必须将设备与局域网IP地址绑定,实际上我需要访问从http://localhost 到Web 应用程序(就像在带有端口转发的Chrome DevTools 中完成的那样),因为我使用的服务器端软件严格只依赖于本地主机(它不是我的,如果可以的话,我不会这样做)。

那么,有没有办法在 Android 默认的原生浏览器上实现这一点?使用 weinre 和/或 Chrome DevTools?

感谢关注!

P.S.:我知道 Android 浏览器不再是 Android 4.4 的原生浏览器,无论如何,我需要它来实现兼容性,当然,如果有可能的话(我猜应该是)。

【问题讨论】:

您要针对哪个版本进行调试? 你的意思是我用的是哪个安卓版本?我的安卓版本是4.1.2,有点老了,但我不得不承认我已经root了设备,它不再更新了,我想更新它,但是当我尝试它时,它说更新不能完毕。浏览器是与该版本预先捆绑的浏览器。顺便说一句,既然我们正在讨论这个问题,有没有办法更新一个有根的 Android 系统? 无论是否生根,您都只能安装官方更新(如果存在)。鉴于您使用的版本相对过时,它很可能不再受支持。不过,您可以尝试非官方构建的较新版本。 无论如何,我不相信 4.1.2 中使用的本机 webview 与 Chrome 远程调试兼容 - 而是似乎在 4.4 中引入了基于 Chromium 的 webview。如果您要调试的问题是旧版本独有的,我认为该路径不适合您。如果在较新的 webview 版本上共享,您可以尝试使用模拟器,尤其是能够使用 VM 加速功能的 x86 映像。 感谢您的建议,不,我猜这个问题仅与旧版本有关,我不知道它在 4.4 上的情况如何,因为我拥有的唯一(物理)设备是带有版本的设备4.1.2.不过,我可以使用虚拟机。您是说即使有根设备也是可更新的,不是吗?奇怪的是我的没有,它经常尝试自我更新,然后我看到一条消息,如“软件更新 - 不成功”。正如您所说,我想不再支持 4.1.2 了。那么非官方版本呢?他们可靠吗?更新会保留我的所有应用和数据吗? 【参考方案1】:

about:debug 至少适用于 javascript 控制台。帮助我了解为什么它在那些原生的、基于 WebView 和受限的浏览器上被破坏。

【讨论】:

这就是我在旧手机中发现错误的原因 太棒了!非常有用的提示,谢谢!【参考方案2】:

您可以使用 Chrome 开发者工具来调试在现有 Android 浏览器中运行的移动网站,其方式与您可以在该网站在 Android 版 Chrome 上运行时进行调试类似:

如果您还没有这样做,请按照此处接受的答案中的所有步骤,使用 Chrome 开发工具(在您的台式计算机上)启用调试:

Chrome DevTools Devices does not detect device when plugged in

现在,将您的设备连接到计算机,在现有的 Android 浏览器中打开您的网页。转到 Chrome 开发工具,您应该会看到您的设备已连接,并且您应该会看到类似这样的内容(通常的“检查”按钮位于右侧)。点击“检查”按钮即可进入 - 您可以使用 Chrome 开发工具调试现有的 Android 浏览器!

【讨论】:

在 4.1 模拟器上显示“未检测到浏览器”,尽管设备在设备列表中可见。 我不确定你的意思。您能否为此提出问题,包括屏幕截图并在此处发布问题的链接作为评论?您是否从设备列表中单击了该设备? 是的,我点击了它,模拟器上的浏览器正在运行,那里加载了一个网站。以下是 Chrome 显示的内容:i.imgur.com/UJHCJjt.png 也许 Android 4.1 模拟器(API 级别 16)对于 Chrome 远程调试器来说确实太旧了。 我仍然不完全确定您要做什么。您是否以某种方式通过 Chrome 运行 SDK 模拟器而不是物理设备?听起来您可能正在尝试通过 Web 浏览器调试本机应用程序,但这是行不通的。本题是关于通过原生浏览器调试网站的问题,与原生安卓应用无关。 问题是我自己没有使用旧版 Android 浏览器的真实设备。这就是使用模拟器的常见原因——在不同的浏览器上测试网站。哦,好吧,我想我将不得不使用 weinre 库在旧的移动浏览器上调试网站。此外,一些制造商过去常常基于 Android 浏览器创建自己的移动浏览器版本,因此您永远不知道在任何 Android 设备上启动默认浏览器时会得到什么......【参考方案3】:

您也可以为此使用 chrome://inspect ,只需确保您的本机浏览器正在运行,因为您无法像从该页面使用 chrome 一样启动它。

此外,如果它没有显示在列表中,使用 adb 列出设备通常会解决此问题。

adb devices

有关完整说明,您应该查看有关此主题的 android 文档 https://developer.chrome.com/devtools/docs/remote-debugging

【讨论】:

我怀疑这只能从 4.4 开始工作。 谢谢你的链接,反正我已经看过了 我的 LGG3 5.0.1 上确实有开发工具。但是在 2015 年 4 月 5 日那一周,我更新了浏览器组件,现在我在使用开发工具时看到的只是一个空白的检查器窗口。我知道这没有多大帮助,但我有开发工具在 android 4.4+ 上运行,设置没有改变。 这真的回答了这个问题吗?询问它的人指的是所有 Android 手机上的默认(或库存)Android 浏览器。在我看来,您提供的链接描述了当您使用适用于 Android 的 Chrome 浏览器而不是默认浏览器时如何进行调试。

以上是关于如何在台式机上调试 Android 的原生浏览器(不是 Chrome)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Android真机进行调试

调试 Android 中的 CSS 布局故障

为啥在较新的 Android 设备上预检失败,但在较旧的设备和台式机上却没有?

如何无线调试Android应用

如何在移动设备上调试网页

Android开发怎么调试Service