Appium Appium 执行一段时间后,提示 adbExec timeout

jack · 2021年12月02日 · 最后由 jack 回复于 2021年12月03日 · 4057 次阅读

这个时候我使用 adb devices 设备展示正常,但是我 adb shell 始终卡住没有出现 $ 或者 #

共收到 13 条回复 时间 点赞

之前华为手机有出现过,原因是有某个进程一直占用着 adb 连接,当时我这个进程是 atx 的第三方输入法。

你试下关掉 usb 调试再打开,问题是不是会解决?

jack #2 · 2021年12月02日 Author
陈恒捷 回复

你好,我在出现上面情况后,执行 adb kill-server adb start-sever
adb devices 列表机器全变成 offline 了,多次 adb kill-server adb start-sever 均无法恢复,物理插拔手机后,adb devices 和 adb shell 均恢复了

jack #3 · 2021年12月02日 Author
陈恒捷 回复

我查看了 adb 5037 端口,出问题的时候,有几个链接是 time_wait。这种情况可能是机器的问题吗,我这边测试的是定制的安卓设备
adb 13218 hiar 4u IPv4 0x7a8889592551533d 0t0 TCP localhost:5037->localhost:53542 (ESTABLISHED)
adb 13218 hiar 10u IPv4 0x7a8889592552ed65 0t0 TCP localhost:5037 (LISTEN)
adb 13218 hiar 12u IPv4 0x7a8889592567b02d 0t0 TCP localhost:5037->localhost:53548 (ESTABLISHED)
adb 13218 hiar 13u IPv4 0x7a888959255171b5 0t0 TCP localhost:5037->localhost:53770 (ESTABLISHED)
adb 13218 hiar 16u IPv4 0x7a8889592550678d 0t0 TCP localhost:5037->localhost:53754 (ESTABLISHED)
adb 16902 hiar 3u IPv4 0x7a888959256271b5 0t0 TCP localhost:53542->localhost:5037 (ESTABLISHED)
adb 16907 hiar 3u IPv4 0x7a8889591fdbe47d 0t0 TCP localhost:53548->localhost:5037 (ESTABLISHED)
adb 16997 hiar 3u IPv4 0x7a88895925504915 0t0 TCP localhost:53754->localhost:5037 (ESTABLISHED)
adb 17020 hiar 3u IPv4 0x7a888959256b8eed 0t0 TCP localhost:53770->localhost:5037 (ESTABLISHED)

adb shell 背后不仅需要走电脑端的 server ,还要走手机端的 adb daemon 。看你这个情况应该是手机端 daemon 有问题卡住了,电脑端 server 没问题。

你先按我说的,通过手机上的 开发者选项-usb 调试 的开关,重启 adb daemon 试试?

jack #5 · 2021年12月02日 Author
陈恒捷 回复

好的,谢谢!我们设备貌似没有开发者选项-usb 调试 ,我在 am 启动了 com.android.settings,没找到这个选项。我再找找,找到关一下。
这个问题是偶现的,有的时候跑几天都不会出现

jack #6 · 2021年12月02日 Author
陈恒捷 回复

请教下,我怎么才能查看设备里 adb daemon 的状态呢这就是 adb daemon 吗

jack 回复

对,adbd ,d 是 daemon 的缩写。

jack 回复

你们 android 系统是定制的么,不是的话可以百度一下 android 打开开发者选项 。开发者选项是个隐藏菜单来的。

jack #9 · 2021年12月02日 Author
陈恒捷 回复

系统是定制的,我找到版本号,点了 5 下,toast 说进入开发者模式了,但是我没找到开发者入口按钮😅

jack #10 · 2021年12月02日 Author
陈恒捷 回复

好的,谢谢,下次出问题的时候我看下 adbd 是不是正常的

不过这个问题不好定位,因为出问题的时候 adbd 已经 gg 了,你 shell 都进不去,更别说看 ps 进程数据了。

可以用个笨方法,参照 https://groups.google.com/g/android-platform/c/M7gPNtvTHIw?pli=1 打开 adbd 的日志输出,然后持续抓 logcat ,直到挂掉,再分析 logcat 里面和 adb 有关的日志。

为避免你打不开,我把关键内容也拷过来了:

Maybe you can try this and look then
whether you can see any adbd traces in logcat ?
( redirect stdio printf output to logcat,
but i can be a little bit noisy .. means
you need a apropriate filter )

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

Good luck !

Frank

不过我自己没测试过,你可以试试。

jack #12 · 2021年12月03日 Author
陈恒捷 回复

好的,非常感谢!

jack #13 · 2021年12月03日 Author
陈恒捷 回复

今天早上抓到一条日志,logcat 是跑在设备里的,看上去设备上的 adbd 收到了 appium start 应用的请求,为啥会 FUNCTIONS_DISABLED or USB plug out 呢
12-03 09:13:56.426 I/adbd ( 6073): Tianyuan Current sh name:am start -W -n com.xxxx.settings/com.xxxx.settings.Settings -S
12-03 09:13:56.448 I/adbd ( 6073): Tianyuan FUNCTIONS_DISABLED or USB plug out,Do not submit the write request

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册