解決在 CI 環境下 adb 指令偶然出現 waiting for device 連接不到設備問題

最近發現透過 Jenkins 周期性的執行 Android 自動化測試,過程中當我們要透 adb (Android Debug Bridge) 指令操作手機,比如說安裝、移除、啟動應用程式等操作時,要執行這些 adb 的指令都無法成功執行,而會跳出 waiting for device 的訊息。

當下我執行了 adb devices 指令來查看目前有那些設備連接在該電腦時,居然發現沒有任何一台設備連接在電腦上,此時我重新插拔連接 USB 後再下 adb devices 指令,又可正常的抓出連接在電腦的手機。

但測試沒隔幾天後一樣的問題又再度發生…

一開始我都想說是因為 USB 接觸不良的關係而導致此問題連接斷線,但我看 USB 都還是很正常的接上手機且手機都還有正常的在充電。

於是我上網搜尋了一下,也是有不少人有同樣的問題,其中有一篇提到說可以固定 10 秒鐘就執行 adb devices 指令,不斷的 ping 設備來解決此問題。

我就參考此做法,寫了一個 shell script 讓它每 10 秒鐘執行一次 adb devices ,程式碼如下所示:

#! /bin/bash

while [[ true ]] ; do
   adb devices
   sleep 10
done

經過幾天的觀察下來,也確定此問題沒有再出現。

 

參考文章: Working around ADB “waiting for device” issue

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s