`

【译】Android上的远程调试(转)

 
阅读更多

转载:http://www.seejs.com/archives/296

 

注意: 我们在远程调试中使用的交互协议信息,请参阅调试协议文档和chrome.debugger

远程调试概述

网页内容在移动设备上的用户体验与桌面型的相比有很大的区别。Google Chrome DevTools 有一整套你已经熟悉的工具允许你用来 inspect, debug, 以及 analyze 在移动设备上的网页,这意味着你可以使用你的开发机器上的Chrome DevTools来调试一个移动设备上打开的页面。remote-debug-overview只要你的移动设备通过 USB 连接到开发机器,你就可以开始调试,你可以查看甚至修改结构,脚本和样式,直到你得到一个在所有设备上都表现完美的没有 bug 的页面。 当你在你的开发机器上调试一个web应用的时候,你可以使用端口反向转发来允许移动设备通过 USB 从开发机器访问一个网站。端口反向转发要求开发机器安装Chrome 29或更高版本,并且要求移动设备安装Chrome 28或更高版本。

使用 Chrome 的 ADB 扩展进行远程调试

在开始调试之前,你需要做以下准备:

  • 一台安装了Chrome 28或更新版本浏览器的 Android 手机或平板。
  • 一条 USB 连接线(Windows用户还需要安装相应的USB设备驱动程序).
  • 在你的开发机器上已安装29或更新版本的Chrome。
  • 在你的开发机器上已经安装Chrome的ADB扩展。

注意:如果你已经在使用旧版的远程调试流程,或者使用更早版本的Chrome,请参看Remote Debugging on Android (Legacy Workflow)

1. 安装ADB扩展

ADB扩展简化了远程调试的设置过程。ADB扩展包含了 Android Debug Bridge (ADB),它使得你可在开发机器上通过 USB 调试你的移动设备。这个扩展提供以下好处:

  • 包含了ADB,因此你不需要再安装完整版的Android SDK。
  • 为轻松的控制开始和停止ADB守护进程提供了一个UI,并且可以查看连接中的设备。

Chrome Web Store的安装进程不能在Windows 8中正常工作。如果你在安装过程中遇到任何问题,可以在github上ADB扩展的回复中查看如何下载和安装扩展的详细信息。

2. 启用你的移动设备上的USB调试功能

为了能通过 USB 进行调试,你需要设置你的Android设备为开发环境。根据向导提示,启用你的移动设备上的USB调试功能,然后系统将检测你的设备。 启用USB调试:

  • 在大多数运行Android 3.2或更早版本的设备中,你可以找到以下选项“设置” > “应用” > “开发环境”。
  • 在Android 4.0和更新版本中,它是“设置” > “开发者选项”。
  • 在Android 4.2及以后,开发者选项默认被隐藏。前往“设置” > “关于手机”,根据提示点击版本号,直到开启“开发者选项”。返回上一屏查找“开发者选项”。

image_4如果你是在Windows上做开发,你需要为你的移动设备安装相关的USB驱动。参考Android开发者网站上的OEM USB Drivers。 获取更多信息,请查看发布在Android开发者网站上的Setting up a Device for Development

3. 通过USB链接你的移动设备

  1. 用USB连接线连接你的开发机器和移动是被。
  2. 在移动设备上,启动Chrome。打开“设置” > “高级” > “开发工具”,确认启动USB网页调试,如图所示:

image_5当把你的设备连接到开发机器的时候,你有可能会在移动设备上看到一个为这台电脑请求USB调试权限的警告。usb-debugging-dialog为了避免每次调试都看到这条警告,选择“总是允许来自这台电脑的请求”,点击确定。

4. 开始使用 ADB 扩展进行调试

当ADB扩展安装完成后,在Chrome菜单旁边将会出现一个灰色的Android菜单图标。 开始调试:

  1. 点击Android图标,然后点击“启动ADB”。
    adb-plugin-menu
    一旦ADB启动成功,菜单图标变为绿色并且如果有设备已经连接,还会列出当前已连接设备的数量。
    adb-plugin-menu-active
  2. 点击“查看检测目标”打开about:inspect页面,这里会列出每一个已连接的设备以及它的选项卡。
  3. 查找你想要调试的设备选项卡,点击它的URL旁边的查看连接。

如果你没有看到任何已连接的设备:

  • 检查你的设备已经连上了USB。
  • 通过发送adb devices命令确认你的设备被列为可用。如果不是,检查你设备的USB调试模式是否启用。
  • 确认在Android版的Chrome中已经启用USB调试功能。

5. 调试你的应用

elements-panel例如,查看你所选中页面中的元素,在你的移动设备上的Chrome中这个元素对应的页面结构会立即高亮显示。image_9同样,在DevTools的控制台中编写脚本或者执行命令,都会影响你设备中检查的页面。你也可以使用所有其他面板,例如TimelineProfiles

注意

  • 你可能会注意到在远程调试过程中你可访问与你的开发机器上的版本不同的DevTools。这是因为工具会同步Android设备上使用的Chrome版本。
  • 因为我们通过USB链接电脑,所以你可以让你的设备处于一个真实的网络中,并且在Network面板中查看真实网络条件下的网络瀑布流。
  • 移动设备上的硬件运行你的网页通常会比PC更慢,因此使用Timeline面板来分析如何优化渲染和CPU来达到最佳效果。
  • 如果你在你的开发机器上运行一个web服务器,并且网络限制阻止你的移动设备想这台服务器发送请求,请参看reverse port forwarding

端口反向转发(实验)

同样,你有一台web服务器运行在你的本地开发机器上,而你想通过你的移动设备访问这个网站。如果你的移动设备和开发机器处于同一个网络环境,这很简单。但这在某些情况可能很困难,比如在一个受限的企业网络中。 一个在Android版Chrome中被叫做“端口反向转发”的新特性,使得这个问题变得简单。它通过在你的移动设备上建立一个监听TCP端口映射到你的开发机器上的特定的TCP端口。经过转发端口的信息流通过USB传播,因此,它不依赖于移动设备的网络配置。 要使用这个特性,你需要做以下准备:

  • 在你的开发机器上安装Chrome 29或更新版本。
  • 在你的开发机器上安装Android Debug Bridge(Chrome ADB扩展或完整版的Android SDK)。
  • 在你的移动设备上安装Android版的Chrome 28或更新版本。

次过程假定你已经拥有了像Remote debugging with the ADB Chrome extension中描述的远程调试配置。

1. 链接你的移动设备

  1. 通过USB连接你的设备和开发机器。
  2. 停止目前运行在移动端Chrome下的所有示例。
  3. 打开Android版Chrome。
  4. 前往“设置” > “开发者工具”,然后开启USB网页调试。
  5. 开启你的开发机器上的ADB:
    • 如果你使用ADB扩展,点击ADB图标,然后点击Start ADB。你应该可以看到图标变绿了,并且显示已连接的设备总数。
    • 如果你不使用扩展,打开一个终端并且执行adb devices命令。你应该可以看到已连接的设备的ID列表。

2. 启用端口反向转发

在你的开发机器上执行下面的步骤:

  1. 打开about:flags,开启Enable Developer Tools experiments,然后重启Chrome。
    chrome-flags
  2. 打开about:inspect。你应该可以看到你的设备和它打开的选项卡。
  3. 点击任何一个已列出站点旁边的Inspect
  4. 在打开的DevTools窗口中,打开Settings面板。
  5. Experiments中,勾选Enable reverse port forwarding
    settings-experiments
  6. 关闭DevTools窗口,回到about:inspect

3. 添加一个端口转发规则

  1. 再次点击Inspect链接打开DevTools,然后再次打开Settings。你应该可以看到一个Port forwarding选项卡。
  2. 点击Port Forwarding
  3. 在设备端口输入框中,输入Android设备需要监听的端口号(默认为8080)。
    settings-forwarding
  4. 在目标输入框中,追加端口号到运行你的应用程序的localhost上。

4. 利益

在Android版Chrome中,打开localhost:<设备端口号>,<设备端口号>是你填入设备端口输入框的值(默认为8080)。你应该可以看到你开发机器上服务器中的内容。

Chrome 29之前,没有充分发挥端口反向转发的功能。如果你遇到端口反向转发的问题,请确认你正在使用Chrome 29或更新版本。如果端口转发规则看起来没有效果,添加第二个规则,复制端口转发规则有时候能够解决一些较早版本Chrome中的问题。

原文地址:Remote Debugging on Android

分享到:
评论

相关推荐

    adb指令操作Android设备远程连接调试

    在Android开发过程中,ADB(Android Debug Bridge)是一个强大的工具,用于与Android设备进行通信,包括安装应用、数据传输、设备控制以及远程调试等。本文将详细介绍如何使用adb指令操作Android设备进行远程连接...

    ADB远程调试工具,远程网络调试

    本压缩包提供了ADB远程调试的相关工具和指南,帮助用户实现无线网络调试。 1. ADB驱动:在使用ADB时,首先需要在电脑上安装对应的ADB驱动。这些驱动使得电脑能够识别连接的Android设备,无论是物理手机还是模拟器。...

    安卓远程调试工具

    能够不使用数据线进行调试。使用方法:调试电脑和手机使用一个wifi,手机安装后打开远程调试,电脑打开cmd,输入adb connect XXX.XXX.XXX.XXX 即可(XXX是手机上显示的ip)

    android 远程调试工具和安卓投屏工具的exe文件

    本资源提供的是两款非常实用的exe文件,分别对应Android远程调试工具和安卓投屏工具,用户只需下载解压后点击安装,无需再进行繁琐的搜索和尝试。 首先,我们来详细了解一下Android远程调试工具。远程调试是开发者...

    Android离线webview调试工具,开发H5混合应用必备

    然而,对于H5页面的调试工作,开发者通常依赖于Chrome浏览器的开发者工具(Chrome DevTools),其中的`chrome://inspect`功能可以远程调试连接到同一网络的设备上的WebView。但在中国,由于网络限制,`chrome://...

    安卓远程调试开启工具

    可以打开android设备的网络调试模式,使用adb connect [手机ip]连接; 注意!!必须root过的设备才可以使用。 在一些没有条件使用usb数据线连接的场合下比较有用。android开发人员必备工具

    Android 程序调试技术学习

    除了基本的断点和日志调试,Android还支持远程调试,允许你在物理设备或模拟器上调试运行在另一台机器上的应用。这对于团队协作和云测试特别有用。此外,Android Studio的布局调试器可以帮助你实时查看和调整UI元素...

    ADB调试工具,支持远程

    在本资源中,我们看到两个关键文件:adbWireless1.5.4.apk 和 adb_tools.rar,它们都是为了实现ADB的远程调试功能。 **ADB简介** ADB是Android开发者用来进行设备管理、数据传输、应用安装和系统调试的重要工具。它...

    Android调试工具及方法

    2. 使用Android Debug Bridge (ADB):ADB是一个命令行工具,可以用来调试设备、安装应用、发送命令,甚至远程控制设备。 3. 代码审查:定期进行代码审查,检查代码质量,避免潜在问题。 4. 单元测试和集成测试:编写...

    Android 蓝牙串口调试助手源码(保证正确)

    **Android 蓝牙串口调试助手源码详解** 在移动设备开发中,尤其是在物联网(IoT)领域,蓝牙通信是一种常见的技术,用于设备间的短距离无线数据传输。本项目"Android 蓝牙串口调试助手源码"提供了一个完整的解决方案...

    android 连接远程数据库

    在Android开发中,连接远程数据库是一项常见的任务,它允许应用程序从服务器获取或存储数据,实现数据的同步。这里我们将深入探讨如何在Android中实现这一功能,以及涉及的相关知识点。 首先,我们要了解Android与...

    android 无代码调试

    GDB是一个强大的远程调试工具,而gdbserver是它在目标设备上运行的服务,负责接收来自GDB的调试指令并执行。以下是使用GDB和gdbserver进行无源码调试的基本步骤: 1. **安装NDK**:因为GDB和gdbserver是NDK的一部分...

    Android Studio远程数据库操作实现源码

    在Android开发中,远程数据库操作是一项重要技能,它允许应用程序通过网络与远程服务器进行数据交互,从而实现数据的存储和检索。本项目是基于Android Studio的,提供了实现远程数据库操作的源码,以及一个简单的...

    Expo 安卓调试程序apk

    这个调试apk包含了源代码映射,使得在设备上运行时仍能进行JavaScript的远程调试。 6. **安装调试Apk**:将`Test.apk`通过蓝牙、邮件或其他方式发送到你的Android设备上,然后在设置中启用“未知来源”的应用安装...

    gdb动态调试android可执行程序1

    10. 远程调试:远程调试是指在不同主机上调试程序的过程。在远程调试中,开发者可以使用GDB或其他调试工具来调试远程主机上的程序。 11. strip:strip是一个 Unix 命令,用于删除可执行文件中的调试信息。strip ...

    基于android的远程视频监控系统 附完整源码.zip

    提供的源码应该包含了客户端的Android应用和服务器端的Java程序,开发者可以通过阅读和调试代码,更深入理解远程视频监控系统的实现细节。重点关注以下几个部分: 1. Android端的Camera初始化和预览回调。 2. 图像...

    android远程监控

    综上所述,实现“android远程监控”项目需要掌握一系列技能,包括网络编程、数据交换、设备交互、安全策略、UI设计以及跨平台兼容性等。这些知识的综合运用,才能构建出功能完备、安全可靠的远程监控解决方案。

    Android-AndroidStudio依赖远程的gradle文件示例

    本文将深入探讨如何在Android Studio中依赖远程的Gradle文件,以便于项目管理和版本控制。 首先,理解Gradle在Android开发中的作用至关重要。Gradle是一个自动化构建工具,支持多种编程语言,包括Java、Kotlin和...

    Android So动态调试之反jdb附加的解决大法

    3. 连接JDB:在主机上,开发者可以通过ADB(Android Debug Bridge)连接到设备,并启动JDB进行远程调试。 然而,Android系统通常会阻止非系统应用使用JDB进行附加,这就是所谓的“反jdb附加”。为了解决这个问题,...

Global site tag (gtag.js) - Google Analytics