我正在尝试检测 adb 服务器
是否正在 Android 设备上运行,作为我的免费游戏的反作弊实现的一部分。
具体来说,我想停止使用 adb shell input tap x,y
,因为该游戏是一款竞争性多人益智游戏。
我尝试过的事情:
使用电池信息,我可以检测 USB 是否已插入。嗯,这也是一种合法用途。
使用
Settings.Secure
或Settings.Global
,我可以查询ADB_ENABLED
,但总是返回1
如果启用了 adb。它不考虑 adb 连接与否!正在查询所有系统服务,但我看不到任何看起来像 adb 服务的东西。
此时,我已经没有想法了。希望其他人知道如何执行此操作?
最佳答案
您可以检查正在运行的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
但是当您的应用完全在用户控制的设备上运行时,您将无法停止作弊。
关于android - 检测 ADB 服务器是否在 Android 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884372/