我想在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 found
和adb get-state
返回unknown
。因此,這裏也沒有成功。 - 使用
getprop dhcp.wlan0.ipaddress
(返回192.168.1.xx)查找我的本地ip,然後adb connect 192.168.1.xx
返回unable to connect to :5555
。adb 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。 希望有人能幫助我。提前致謝!
你想要達到什麼目的?爲了在沒有PC的情況下創建備份文件,只需運行'/ system/bin/bu backup <備份參數>'。這是'adb backup'在從PC啓動時的功能。 – 2014-11-06 16:43:50
@AlexP。謝謝您的回覆。這可能正是我所需要的,因爲我試圖在沒有PC的情況下創建備份。我將如何能夠設置備份保存的位置?從com.android.commands.bu.Backup的源代碼中,沒有-f參數。另外,如果我正確地閱讀源代碼,則第一個參數(即使在「備份」之前)稍後將用於(作爲int)來創建ParcelFileDescriptor – JooPalmer 2014-11-07 02:23:44
@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