android adb啟動不了

來源:互聯網
上載者:User

昨天群裡有人adb啟動不了 報了這個錯

正常應該是這樣的

我們看下源碼

這裡我們看到兩個分支, if(fd==-2){

            //根據注釋  以前還沒啟動過服務 就走這個分支

            }else{

             當前進程已經有這個服務在運行就走這個分支

            }

根據上面的列印的日誌 很明顯群裡的這位朋友已經執行了這個服務,因為它走進了第二個分支。

但是他在工作管理員中又找不到adb服務。

我們來看下android是怎麼判斷服務已經在進程中的。即什麼情況下int _adb_connect(const char *service)返回-2.

只有當fd<0時才會返回-2.  即fd = socket_loopback_client(__adb_server_port, SOCK_STREAM);建立失敗

傳入兩個參數分別為連接埠號碼和TCP類型的一個常量。adb是連線導向的,所以SOCK_STREAM是不變的常量,能導致函數調用失敗的

必然是因為我們傳入了一個不適合的值,這個值只能是連接埠號碼。由程式知  __adb_server_port=5037.

 

得出結論 5037連接埠號碼被其它程式佔用了(只能是佔用,我想不出還有其它可能)。

然後就簡單了

dos視窗運行

找到佔用5037連接埠號碼的進程

擷取調用進程的程式,我這裡就是adb程式。然後在工作管理員中殺死該進程就不會出現adb無法啟動了。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.