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

标签 android adb

我正在尝试检测 adb 服务器 是否正在 Android 设备上运行,作为我的免费游戏的反作弊实现的一部分。

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

我尝试过的事情:

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

  2. 使用 Settings.SecureSettings.Global,我可以查询 ADB_EN​​ABLED,但总是返回 1 如果启用了 adb。它不考虑 adb 连接与否!

  3. 正在查询所有系统服务,但我看不到任何看起来像 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/

相关文章:

android - 数组字符串声明

android - 无法通过动态链接启动预发布免安装应用

java - 安装后如何将应用程序注册为启动器

android - 如何在 Android Studio 中或通过 ADB 获取 Android Things 设备上的应用程序的屏幕截图?

android - Fedora 27 上的 adb 未检测到 Google Pixel

java - Dagger 2 Inject 注释破坏了注入(inject)

android - 如何设置android :inputType using databinding

android - 运行 ADB 命令的 Bash 脚本不会遍历设备列表

android - 在 React native 'adb' 不被识别为内部和外部命令

android - Android 设备上的 ADB 输出