2014-11-06 73 views
11

我想在Android設備本身上使用ADB,因此沒有任何主機。這兩天前完美的工作,但它突然停止工作。據我所知沒有任何變化(例如沒有安裝應用程序)。我可以在終端仿真器中使用adb backup -f /sdcard/backup.ab <package-name>,它會開始備份該軟件包。當我現在嘗試時,它會返回adb: unable to connect for backup。調查使用adb devices返回一個空的列表。我從來沒有打擾過以前檢查設備,我只是直接去了我的adb命令,因爲一切正常。本地在設備上使用ADB(回送)顯示沒有設備

這是在HTC Desire上運行Android 4.4.2,ADB版本爲1.0.31。 使用ADB從我的電腦與這款手機工作完美,但這不是我想要的。

我已經試過

  • 我試圖在4.4.2上執行4.4.2在不同設備(華碩Padfone 2相同的動作,三星Galaxy Note GT-N7000,索尼的Xperia小號在4.1.2上),但是adb devices在它們全部上返回一個空列表。我開始想知道爲什麼這在我的HTC Desire中起到了作用。
  • 搜索Google和堆棧溢出,但大多數(如果不是全部)結果是指驅動程序問題或涉及主機的任何其他問題。
  • adb kill-server + adb start-server大約一百次,以及stop adbd + start adbd
  • 在「設置」中關閉和打開「USB調試」,以及撤銷對以前授權的計算機的訪問。 (但是,在工作情況下,我從來沒有得到任何RSA密鑰驗證提示。)
  • adb -a devices - >空列表。
  • adb usb - >error: device not found
  • 嘗試在TCP模式下重新啓動adb(d)不成功(即使在工作環境中這不是必需的)。 adb tcpip 5555返回error: device not found
  • getprop返回沒有名爲service.adb.tcp.port的條目和setprop service.adb.tcp.port 5555以靜默方式失敗。 (之後使用getprop service.adb.tcp.port檢查不會返回任何內容。是否需要root?)
  • adb connect localhost返回unable to connect to localhost:5555
  • 當守護進程啓動時,它從端口5038開始(當從我的PC使用ADB時,它從5037開始)。 adb connect localhost:5038返回connected to localhost:5038。但是adb devices仍然返回空列表,並且adb backup返回adb: unable to connect for backup。此外adb shell返回error: device not foundadb get-state返回unknown。因此,這裏也沒有成功。
  • 使用getprop dhcp.wlan0.ipaddress(返回192.168.1.xx)查找我的本地ip,然後adb connect 192.168.1.xx返回unable to connect to :5555adb connect 192.168.1.xx:5038 - >unable to connect to :5038。使用ADBHOST=192.168.1.xx adb start-server對這些結果沒有影響。
  • 實際上有些相關的少數搜索結果之一是AOSP問題跟蹤器上的this線程。然而,它描述了一個問題,在使用setprop service.adb.tcp.port 5555,adb devices後,至少顯示一個設備,但是離線(即localhost:5555 offline)。稍微靠近線程的末端就有一個解決方案,它涉及改變$ HOME目錄,以便改變保存RSA密鑰的位置,例如, HOME=/sdcard。然後有必要使用cat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys將公鑰添加到/ data/misc/adb/adb_keys。但是,我認爲這需要根?而且,所有這些在工作環境中都沒有必要,所以我懷疑我的問題的解決方案是在這個方向上找到的。從AOSP的問題跟蹤器的線程派生的This article不涉及附加公鑰。但是,提到的方法是不成功的。
  • netstat回報(其中包括):

    • Proto: tcp
    • Recv-Q: 0
    • Send-Q: 0
    • Local Address: 127.0.0.1:5038
    • Foreign Address: 0.0.0.0:*
    • State: LISTEN
  • ps顯示了/sbin/adbd過程,也是一個adb過程:

    • USER: shell PID: 92 PPID: 1 VSIZE: 3624 RSS: 264 WCHAN: ffffffff PC: 00000000 S NAME: /sbin/adbd
    • USER: u0_a57 PID: 9754 PPID: 1 VSIZE: 3016 RSS: 988 WCHAN: ffffffff PC: 4014f768 S NAME: adb
    • (Commands executed from the terminal are executed as USER: u0_a57.)

我想這是非常它。

我正在尋找一個解決方案,不需要任何根,因爲以前它不需要它。 我希望我的情況和問題很明確。請讓我知道我的問題是否需要改進,因爲這是我第一次發佈Stack Overflow。 希望有人能幫助我。提前致謝!

+1

你想要達到什麼目的?爲了在沒有PC的情況下創建備份文件,只需運行'/ system/bin/bu backup <備份參數>'。這是'adb backup'在從PC啓動時的功能。 – 2014-11-06 16:43:50

+0

@AlexP。謝謝您的回覆。這可能正是我所需要的,因爲我試圖在沒有PC的情況下創建備份。我將如何能夠設置備份保存的位置?從com.android.commands.bu.Backup的源代碼中,沒有-f參數。另外,如果我正確地閱讀源代碼,則第一個參數(即使在「備份」之前)稍後將用於(作爲int)來創建ParcelFileDescriptor – JooPalmer 2014-11-07 02:23:44

+0

@AlexP。但是,'/ system/bin/bu /sdcard/backup.ab backup -all'不會在sdcard中創建backup.ab文件。 bu唯一返回的是一個警告'linker:app_process有文本重定位。',這似乎是由Xposed引起的。從我所讀到的,這只是一個警告,操作(bu備份)仍然應該執行。我無法找到任何證據表明它正在執行。 – JooPalmer 2014-11-07 02:36:58

回答

-2

我相信你的設備可能已經重新啓動。要將手機初始化爲tcp,您必須從計算機運行adb tcpip 5555。但那不會永遠持續下去。如果您的手機重新啓動,那麼您將不得不再次從計算機運行adb tcpip 5555

我不知道,當你說你的意思:

Trying to restart adb(d) in TCP mode is unsuccessful (even though this was not necessary in the working situation). adb tcpip 5555 returns error: device not found.

你從一臺計算機上運行呢?如果它是來自計算機,那麼我不確定那裏有什麼問題。但是,如果它來自手機,則無法找到要更改爲tcp的設備。

要解決這個問題,應該從電腦上運行adb tcpip 5555