主要有两个原因吧:
- 没有正确开启开发者模式下的USB调试
- 驱动列表里没有设备信息
可以根据我下面的步骤对照一下看看操作对不对,下边儿是老米手机整adb的踩坑过程
1. 手机端操作
顺便说一下X米手机的前置步骤,以下部分的文字和图片摘自:
小米手机开发者选项和USB调试打开步骤:https://miuiver.com/enable-miui-advanced-options/
Windows 配置 fastboot 和 adb 命令环境变量:https://miuiver.com/add-fastboot-and-adb-environment-variables/
小米手机开发者选项打开步骤
依次点击:手机设置 -> 我的设备 -> 全部参数 -> 连续点击几次“MIUI 版本”,之后便会提示已处于开发者模式:
手机USB调试打开步骤
在开启开发者模式后,依次点击:手机设置 -> 更多设置 -> 开发者选项 -> 开启“USB调试。
然而最近版本的有两个button:
- 开启开发者选项
- USB调试
这两个都得点开,我就是第二个忘记点了…
2. windows 环境配置
建议直接看这个文章:
https://miuiver.com/add-fastboot-and-adb-environment-variables/
就是下载Android SDK Platform Tools
,然后添加到环境变量中就行,最后检查一下是否添加正确:
> adb --versionAndroid Debug Bridge version 1.0.41
Version 33.0.3-8952118
Installed as xxx\platform-tools\adb.exe
这里弄完之后建议整一个三连:
xxx>adb kill-serverxxx>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfullyxxx>adb devices -l
List of devices attached
如果下边的List为空,那就可能是需要后边的操作,如果是这样的,那就没啥问题了:
C:\Users\zihao>adb devices -l
List of devices attached
35xxxx7c device product:picasso model:Xiaomi_xxxxx device:picasso transport_id:1
3. 驱动部分
基本参考自:
https://www.jianshu.com/p/6131cbe22bea
咱第一步先获取设备的VID,按照这个顺序:
我的电脑右键 -> 管理 -> 设备管理器 -> 找到手机设备
然后在手机上,点击右键,点击属性
上图这个字符串就是就是VID 添加到 adb_usb.ini
中,要加上一个0x
这个ini配置文件
一般在 C:\Users\xxxx\.android
之下:
如果没有就在 C:\Users\xxxx\.android
下创建一个adb_usb.ini
文件
以上部分参考自:
https://stackoverflow.com/questions/19830407/i-cant-find-adb-usb-ini-file-in-android-folder
4. 验证一下
cmd输入以下命令试试:
C:\Users\xxx>adb exec-out screencap -p > bbskali.png
就是截图并输入到当前目录(windows上)的bbskali.png
图片中:
使用 adb 点击 (250, 250)
:
C:\Users\xxxx>adb shell input tap 250 250Exception occurred while executing 'tap':
java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permissionat com.android.server.input.InputManagerService.injectInputEventInternal(InputManagerService.java:928)at com.android.server.input.InputManagerService.injectInputEvent(InputManagerService.java:880)at android.hardware.input.InputManager.injectInputEvent(InputManager.java:1091)at com.android.server.input.InputShellCommand.injectMotionEvent(InputShellCommand.java:138)at com.android.server.input.InputShellCommand.sendTap(InputShellCommand.java:342)at com.android.server.input.InputShellCommand.runTap(InputShellCommand.java:336)at com.android.server.input.InputShellCommand.onCommand(InputShellCommand.java:192)at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)at android.os.ShellCommand.exec(ShellCommand.java:38)at com.android.server.input.InputManagerService.onShellCommand(InputManagerService.java:3554)at android.os.Binder.shellCommand(Binder.java:953)at android.os.Binder.onTransact(Binder.java:837)at android.hardware.input.IInputManager$Stub.onTransact(IInputManager.java:1125)at android.os.Binder.execTransactInternal(Binder.java:1187)at android.os.Binder.execTransact(Binder.java:1146)
但是,报了这个:
SecurityException: Injecting to another application requires INJECT_EVENTS permission
要点开这个:
老米手机,开启这个还需要tm的插入SIM卡
可以参考:
https://blog.csdn.net/weixin_42600398/article/details/116520110
想和我说同样的话的,可以看看这个:
https://www.zhihu.com/question/263928602
5. 其他设置
点开这个方便调试的地方:
一些其他的测试指令
# 点击屏幕的 250 250 位置
adb shell input tap 250 250# 从屏幕的 250 250 滑动到 800 800 位置
adb shell input swipe 250 250 800 800