通过蓝牙进行Android调试

7

我之前使用adb通过WIFI和USB进行Android应用程序的调试,感觉非常好。

现在我想知道是否可以通过蓝牙连接adb与手机进行调试。我进行了一些快速的研究,但是没有找到相关的信息 - 你有尝试过吗?

2个回答

4
当前的adb软件不支持此功能,但如果您有root设备(或者可能没有 - 请参见下文),则可以通过修改adb或使用蓝牙来进行隧道传输以支持tcp等通道。您需要获取adb程序的源代码 - 相同的源代码用于构建PC和设备版本。首先,您需要使用未修改的功能构建它,这可能需要较多的构建系统修改,除非您将其作为完整Android源代码构建的一部分(正如旨在完成的方式)。然后,您将修改它以添加蓝牙通道作为选项,并在设备上安装它(为什么需要root)并在PC上设置路径。您可能认为您可以从PC上的其他位置运行它,只要您在命令行中使用它即可,但是如果您启动DDMS,则可能会关闭正在运行的adb服务器并使用路径中的默认服务器启动一个新服务器,因此最终您需要将修改后的版本放在那里。如果您已经可以让设备通过tcp接受adb连接(在某些情况下可能无需root),则还有另一种选择,即不修改ADB(或至少不修改设备端),而是在设备上找到可以接受蓝牙连接并将流量转发到股票adb正在运行的tcp端口的本地回环的东西。这将节省重新构建adb的麻烦。最后请注意,adb守护程序不一定必须以更高特权的用户ID运行或安装在官方应用程序的位置 - 您可以将adb守护程序作为普通应用程序运行并使用许多预期的功能。但是,无论哪个adb守护程序首先运行,都会抓取unix域Java调试套接字,因此只有该adb守护程序才能提供完整的java调试服务。诸如logcat,shell,运行进程列表,push / pull等更原始的功能将在没有此功能的情况下至少部分工作(可能需要进行修改),前提是您的adb守护程序不会在无法索​​取调试套接字时退出。如果您可以杀死官方的adb守护程序并利用竞争条件,则可以在它重新启动之前启动一个非官方的adb守护程序 - 您可能需要编写一个脚本或程序来执行此操作,并通过setsid从官方adb shell运行它,这意味着您需要首先通过USB连接。此时,您还可以启动非官方的adb守护程序,该程序将以与官方相同的用户ID运行。在真正投入大量时间设置之前,您可能需要花些时间估计或测试性能(速度)是否令人满意。

1

我知道这有点老,但我似乎找到了一篇可以做到这一点的帖子。所有的功劳归功于fomori.org的作者,他发现了这个问题并提供了信息。今天它帮助了我,也许明天我可以通过使其更易于找到来帮助您。

来源


4
只要来源不是在 Stack Overflow 上,你应该复制与答案相关的部分。你提供的链接已经失效了(至少对我来说是),导致你的回答没有用处。当然,仍然鼓励你提供链接并给予信用,但不依赖第三方永远不更改他们的链接或删除内容会更加有用。 - Vala
该网站似乎已经离线(3分钟前检查过)。 - Imre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接