主要有两个原因吧:
可以根据我下面的步骤对照一下看看操作对不对,下边儿是老米手机整adb的踩坑过程
顺便说一下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:
建议直接看这个文章:
https://miuiver.com/add-fastboot-and-adb-environment-variables/
就是下载Android SDK Platform Tools
,然后添加到环境变量中就行,最后检查一下是否添加正确:
> adb --version
Android Debug Bridge version 1.0.41
Version 33.0.3-8952118
Installed as xxx\platform-tools\adb.exe
这里弄完之后建议整一个三连:
xxx>adb kill-server
xxx>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
xxx>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
基本参考自:
https://www.jianshu.com/p/6131cbe22bea
咱第一步先获取设备的VID,按照这个顺序:
我的电脑右键 -> 管理 -> 设备管理器 -> 找到手机设备
然后在手机上,点击右键,点击属性
上图这个字符串就是就是VID 添加到 adb_usb.ini
中,要加上一个0x![请添加图片描述](https://img-blog.csdnimg.cn/2fdb50742d384fd4af3048c31a25825d.png)
这个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
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 250
Exception occurred while executing 'tap':
java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
at 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
可以参考:
https://blog.csdn.net/weixin_42600398/article/details/116520110
想和我说同样的话的,可以看看这个:
https://www.zhihu.com/question/263928602
一些其他的测试指令
# 点击屏幕的 250 250 位置
adb shell input tap 250 250
# 从屏幕的 250 250 滑动到 800 800 位置
adb shell input swipe 250 250 800 800