Я пытаюсь использовать ADB на самом устройстве Android, поэтому без какого-либо хост-компьютера. Это работало отлично пару дней назад, но оно внезапно прекратило работать. Насколько я знаю, с тех пор ничего не изменилось (например, никаких приложений (un) не установлено). Я мог бы использовать adb backup -f /sdcard/backup.ab <package-name>
в эмуляторе терминала, и он начнет резервное копирование этого пакета. Когда я попробую это сейчас, он возвращает adb: unable to connect for backup
. Расследование с помощью adb devices
возвращает пустой список. Я никогда не потрудился проверять устройства ранее, я просто пошел прямо к команде adb, потому что все работало.
Это было на HTC Desire под управлением Android 4.4.2, ADB версии 1.0.31. Использование ADB с моего ПК с этим телефоном работает отлично, но это не то, что я хочу.
Что я пробовал
- Я попытался выполнить те же действия на разных устройствах (Asus PadFone 2 на 4.4.2, Samsung Galaxy Note GT-N7000 на 4.4.2, Sony Xperia S на 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
. - Попытка перезапустить adb (d) в режиме TCP не увенчалась успехом (хотя это не было необходимо в рабочей ситуации).
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 (при использовании 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
. Таким образом, никакого успеха здесь тоже нет. - Поиск моего локального ip с помощью
getprop dhcp.wlan0.ipaddress
(возвращает 192.168.1.xx), а затем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 Issue Tracker. Тем не менее, он описывает проблему, когда после использования
setprop service.adb.tcp.port 5555
,adb devices
по крайней мере показывает устройство, однако автономное (а именноlocalhost:5555 offline
). Несколько ближе к концу потока достигается решение, которое включает в себя изменение каталога $HOME, чтобы изменить, где сохраняются ключи RSA, например.HOME=/sdcard
. Затем необходимо добавить открытый ключ к /data/misc/adb/adb _keys, используяcat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys
. Однако, я полагаю, это требует корней? Кроме того, все это не было необходимо в рабочей ситуации, поэтому я сомневаюсь, что решение моей проблемы должно быть найдено в этом направлении. В этой статье, полученной из потока в AOSP Issue Tracker, не говорится о добавлении открытого ключа. Однако упомянутый подход не увенчался успехом. -
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 ПК: 00000000 S ИМЯ:/sbin/adbd
- USER: u0_a57 PID: 9754 PPID: 1 VSIZE: 3016 RSS: 988 WCHAN: ffffffff ПК: 4014f768 S ИМЯ: adb
- (Команды, выполняемые с терминала, выполняются как USER: u0_a57.)
Я думаю, что в значительной степени это.
Я ищу решение, в котором не нужен корень, поскольку он не нужен, когда я работал раньше. Надеюсь, моя ситуация и вопрос ясны. Пожалуйста, дайте мне знать, если мой вопрос нуждается в улучшении, так как это моя первая публикация на Stack Overflow. Надеюсь, кто-то может мне помочь. Заранее спасибо!