Mac(Sierra)安卓真机无法建立Appium会话,报socket hang up错误
我来帮你一步步排查这个问题——既然模拟器能正常启动Appium会话,说明你的Appium基础环境配置是没问题的,问题大概率出在真机的连接权限、兼容性或者通信环节上。下面是几个针对性的排查方向:
1. 先确认真机的USB调试核心权限
- 确保真机已经开启USB调试:进入「设置」→「开发者选项」(如果没看到这个选项,先到「关于手机」里连续点击版本号激活),勾选「USB调试」。
- 连接Mac后,手机屏幕会弹出「允许USB调试?」的授权提示,一定要点击允许,并且勾选「始终允许此计算机」——有时候这个提示会被后台APP挡住,记得留意手机屏幕。
- 安卓10及以上版本额外要求:必须开启「USB安装」和「USB调试(安全设置)」这两个选项,这是Appium能控制真机的必要权限。
2. 验证Mac与真机的USB连接稳定性
- 打开Mac终端,运行
adb devices命令,查看是否能识别到你的真机序列号。如果列表里能看到设备,说明基础连接正常;如果没出现,试试换原装USB线、换Mac的USB接口(部分接口供电不足会导致连接不稳定)。 - 若
adb devices能识别但Appium仍报错,重启ADB服务试试:终端依次执行adb kill-server和adb start-server,之后重新连接设备。
3. 检查UIAutomator2 Driver的版本兼容性
- 你用的是
appium-uiautomator2-driver,这个驱动对安卓系统版本有明确的适配要求。先在终端运行appium driver list查看已安装的驱动版本,再确认该版本是否支持你真机的安卓系统。 - 若版本不兼容,尝试更新或降级驱动:更新到最新版用
appium driver update uiautomator2;如果需要指定适配版本,比如安装2.29.0版,执行appium driver install uiautomator2@2.29.0。
4. 排查端口与网络通信问题
- Socket hang up通常是Appium无法和真机上的UIAutomator2 Server建立连接导致的。先检查真机是否开启了防火墙、VPN或网络代理,这些可能会阻断端口通信。
- 确认Mac上的Appium默认端口(比如4723)没被占用:终端运行
lsof -i :4723,如果有其他进程占用,杀掉对应进程或者修改Appium启动端口(启动时加--port 4724这类参数)。
5. 重装真机上的UIAutomator2服务
- Appium会在真机上安装
io.appium.uiautomator2.server和io.appium.uiautomator2.server.test两个应用,如果这两个应用损坏或版本不匹配,也会引发连接失败。 - 先在真机上卸载这两个应用,然后重新启动Appium会话,Appium会自动重新安装适配的版本。
6. 开启详细日志定位精准问题
- 如果以上方法都没解决,启动Appium时加上
--log-level debug参数,开启详细日志模式。从日志里你能看到连接过程中具体是哪一步出错(比如权限不足、端口连接超时),再针对性解决。
内容的提问来源于stack exchange,提问作者the_prole
相关产品推荐
相关产品推荐

