这个解决方案适用于Windows操作系统。
(查看@Chris Knight的解决方案,适用于Mac/Linux)
启动Windows Powershell:
开始 -> 输入 'powershell' -> 按 ENTER 键
运行以下命令:adb devices
PS C:\Users\CJBS>adb devices
List of devices attached
emulator-5656 host
emulator-5652 host
12b80FF443 device
在这种情况下,12b80FF443 是我的物理设备,而 emulator-* 条目是垃圾数据。
根据@Brigham所说,"Android检测模拟器的方法是从端口5555开始扫描。" 端口号在模拟器名称后指定(在这种情况下为5656和5652)。要检查的端口号是模拟器端口号加1。所以在这种情况下:
5656 + 1 = 5657
5652 + 1 = 5653
因此,让我们看看哪个程序正在使用这些端口。在这种情况下,要检查的端口都以 "565" 开头。所以我将搜索以565开头的已使用端口。执行:netstat -a -n -o | Select-String ":565"
PS C:\Users\CJBS> netstat -a -n -o | Select-String ":565"
TCP 127.0.0.1:5653 127.0.0.1:5653 ESTABLISHED 5944
TCP 127.0.0.1:5657 127.0.0.1:5657 ESTABLISHED 5944
- 这个输出中的最后一个字段是 PID(进程 ID)- 在这种情况下,这两个端口的 PID 都是 5944。那么让我们看看这个进程 ID 是什么。执行:
tasklist /v | Select-String 5944
。将 5944 替换为上一个命令的输出:
PS C:\Users\CJBS> tasklist /v | Select-String 5944
adb.exe 5944 Console 1 6,800 K Running MyPCName\CJBS 0:06:03 ADB Power Notification Window
真是个惊喜,它是ADB。正如其他答案所述,也可能是其他程序。
- 现在,只需终止该进程ID。执行
kill 5944
,将5944替换为先前命令中的PID。
PS C:\Users\CJBS> kill 5944
- 为确认虚假的模拟器已经移除,请重新运行以下命令:adb devices
- To confirm that the spurious emulator is gone, re-run the following command: adb devices
PS C:\Users\CJBS>adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
12b80FF443 device
ADB重新启动(就像之前被杀死的那样),并且它不再检测到虚假的模拟器。
adb devices
获取模拟器的名称。4. 尝试通过执行命令adb -s NAME_OF_DEVICE install file.apk
安装 APK。5. 告诉我们发生了什么。 - Cristianadb -d
指定 USB 设备而不是模拟器,adb -e
模拟器而不是 USB 设备,adb -s NAME
可以用于具体指定要使用的设备,尽管我不确定最后一个选项是否总是按照您想象的方式起作用。 - Erhannis