检测ADB服务器是否在Android上运行?

时间:2015-01-11 05:48:52

标签: android adb

我正在尝试检测Android设备上是否正在运行adb server,以便为我的免费游戏进行反作弊实施。

具体来说,我想停止使用adb shell input tap x,y,因为这款游戏是一款有竞争力的多人益智游戏。

我尝试过的事情:

  1. 使用电池信息我可以检测到USB是否已插入。嗯,这也是一种合法用途。

  2. 使用Settings.SecureSettings.Global,我可以查询ADB_ENABLED,但如果启用了adb,则会始终返回1。它不会考虑adb连接与否!

  3. 查询所有系统服务,但我看不到任何看似adb服务的内容。

  4. 在这一点上,我没有想法。希望其他人知道如何做到这一点?

1 个答案:

答案 0 :(得分:6)

您可以检查运行adbd进程或查询init.svc.adbd系统属性:

$ ps adbd
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      14947 1     4596   208   ffffffff 00019358 S /sbin/adbd

$ getprop init.svc.adbd
running

在Android中,adb驱动程序是作为通用usb驱动程序的函数实现的。您可以查看当前启用的usb函数的(逗号分隔)列表,看它是否包含"adb"

$ cat /sys/devices/virtual/android_usb/android0/functions
mtp,adb

但是,当您的应用完全在用户控制的设备上运行时,您将无法停止作弊。