雷电模拟器 adb devices 显示设备offline的解决

雷电模拟器 adb devices 显示设备offline的解决-智慧商城
雷电模拟器 adb devices 显示设备offline的解决
此内容为付费阅读,请付费后查看
12
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费阅读

重启 ADB 服务无法解决

C:\Users\Administrator>adb kill-server

C:\Users\Administrator>adb connect 127.0.0.1:5555

重置USB调试模式

安卓设备上的设置

  • 启用“开发者选项”: 进入 设置 > 关于手机,连续点击 “版本号” 7次,直到提示“您已处于开发者模式”。
  • 启用“USB调试”: 进入 设置 > 系统 > 开发者选项,找到并打开 “USB调试” 开关。
  • (无线调试)启用“无线调试”: 在“开发者选项”中,打开“无线调试”开关。
  • 检查授权弹窗: 当设备首次通过USB连接到一台新电脑时,手机上会弹出一个“允许USB调试吗?”的窗口。必须勾选“一律允许”并点击“确定”。如果错过了,拔插数据线重试。

问题依旧

最后找到的原因和解决方法

 

为什么端口被占用会导致问题?

可以把 ADB 的工作流程想象成一个调度中心:

  • ADB 服务端(Daemon):就是这个调度中心,它必须在 5037 这个固定的地址(端口)上办公。
  • ADB 客户端(你的命令):当你下达 adb devices 命令时,你就是去 5037 这个地址找调度中心,让它帮你列出所有已连接的设备。
  • 安卓设备上的 adbd:每个连接的设备就像一个等待调度的司机,它们也会主动联系 5037 地址的调度中心报到。

如果 5037 端口已经被其他程序占用了,那么:

  1. ADB 客户端尝试启动服务端。
  2. 服务端想要在 5037 端口上开始工作,但操作系统会告诉它:“抱歉,这个地址已经被占用了,你无法在这里启动。”
  3. ADB 服务端启动失败
  4. 你的 ADB 客户端因为联系不上调度中心,所以自然无法获取任何设备信息。最终,它可能会报错(如 * daemon failed to start *)或者直接返回一个空列表,让你误以为没有设备连接。

如何解决 5037 端口被占用的问题

你需要找出是哪个“不速之客”占用了 5037 端口,然后将它关闭。


步骤一:找出占用端口的程序

打开你的终端或命令提示符,根据你的操作系统执行以下命令:

在 Windows 上:

Bash

 
netstat -ano | findstr "5037"
  • -a 显示所有连接和监听端口。
  • -n 以数字形式显示地址和端口号。
  • -o 显示拥有的进程 ID (PID)。
  • findstr "5037" 筛选出包含 “5037” 的行。

你会看到类似这样的输出: TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 12345 最后的数字 12345 就是占用该端口的程序的 PID

接着,用 PID 查找程序名称:

Bash

 
tasklist | findstr "12345"

这会显示出 PID 为 12345 的是哪个程序(例如 some_app.exe)。

在 macOS 或 Linux 上:

Bash

 
lsof -i :5037

这个命令会直接列出占用该端口的程序信息,非常方便。

你会看到类似这样的输出: COMMAND PID USER ... NODE NAME some_app 12345 username ... *:5037 (LISTEN) 第一列的 some_app 就是程序名,第二列 12345 是它的 PID。


步骤二:终止占用端口的程序

现在你已经知道了是哪个程序在占用端口,你有两个选择:

  1. 正常关闭程序:如果发现是某个手机助手(如 豌豆荚、XX手机助手)、某个IDE(如旧版的 Eclipse)或者其他可以正常关闭的软件,直接将它关闭即可。这是最推荐的方法。

  2. 强制结束进程:如果无法正常关闭,或者你不确定它是什么,可以强制结束它。

    在 Windows 上:

    Bash

     
    taskkill /F /PID 12345
    

    (将 12345 替换成你找到的 PID)

    在 macOS 或 Linux 上:

    Bash

     
    kill -9 12345
    

    (将 12345 替换成你找到的 PID)


步骤三:验证 ADB 是否恢复正常

在终止了占用端口的程序后,再次运行 adb 命令。

Bash

 
# 最好先彻底杀死可能存在的旧进程
adb kill-server

# 然后再次执行命令,它会自动启动新的、正常的 adb server
adb devices
© 版权声明
THE END
喜欢就支持一下吧
点赞100赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容