通过蓝牙进行Android调试

hsz*_*hsz 7 android bluetooth adb

我使用早期的adb通过wifi,usb来调试Android应用程序 - 它很棒.

现在我想知道是否可以通过蓝牙连接手机与adb.我做了一个快速的研究,但没有找到任何东西 - 你已经尝试过吗?

Chr*_*ton 4

当前的 adb 软件不支持它,但是如果您有 root 设备(或者即使没有 - 见下文),您也可以通过修改 adb 或使用蓝牙来隧道它支持的通道,从而使之成为可能,例如作为 TCP。

您需要获取 adb 程序的源代码 - 使用相同的源代码来构建 PC 和设备版本。第一步是使用未修改的功能来构建它,这可能需要进行大量的构建系统修改,除非您将其作为完整的 android 源构建的一部分(按照预期的方式完成)

然后,您可以修改它以添加蓝牙通道作为选项,并将其安装在设备上(为什么需要 root)和 PC 上的路径中。您可能认为可以从 PC 上的备用位置运行它,而且只要从命令行使用它就可以,但是如果您启动 DDMS,它可能会终止正在运行的 adb 服务器并启动一个新的 adb 服务器使用路径中的默认值,因此最终您必须将修改后的版本放在那里。

如果您已经可以让您的设备通过 tcp 接受 adb 连接(可能需要 root,也许在某些情况下可能没有),那么还有另一种选择,即不修改 ADB(或至少不修改设备端),而是出现在接受蓝牙连接的设备上运行某些东西,并通过本地环回将流量转发到库存 adb 正在运行的 tcp 端口。这样就省去了重建 adb 的麻烦。

如果您有某种网络共享或类似的蓝牙网络解决方案,您甚至可以利用它来承载 adb-over-tcp-over-bluetooth,而无需编写任何代码。

最后请注意,adb 守护进程作为更高权限的用户 ID 运行或安装代替官方用户 ID 并不是 100% 必要的 - 您可以将 adb 守护进程作为普通应用程序运行,并用它执行许多预期的操作。但是,无论哪个 adb 守护进程先运行,都将获取 unix 域 java 调试套接字,因此只有该 adb 守护进程才能提供完整的 java 调试服务。如果您的 adb 守护进程在无法声明调试套接字时不会退出(可能需要修改),则更原始的东西(例如 logcat、shell、运行进程列表、推/拉等)至少会在没有这些的情况下部分工作。如果您可以终止官方 adb 守护进程并利用竞争条件,您也许可以在重新启动之前启动一个非官方守护进程 - 您可能需要一个脚本或程序来执行此操作,并使用官方 adb 中的 setid 运行它shell,这意味着您需要首先通过 USB 连接。那时,您还可以启动非官方 adb 守护进程,并以与官方相同的用户 ID 运行。

在投入大量时间进行实际设置之前,您可能需要花一些时间估计或测试性能(速度)是否令人满意。