我之前使用adb通过WIFI和USB进行Android应用程序的调试,感觉非常好。 现在我想知道是否可以通过蓝牙连接adb与手机进行调试。我进行了一些快速的研究,但是没有找到相关的信息 - 你有尝试过吗?
当前的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运行。在真正投入大量时间设置之前,您可能需要花些时间估计或测试性能(速度)是否令人满意。