Использование локального устройства ADB на устройстве (loopback) показывает отсутствие устройств

Я пытаюсь использовать 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: 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's 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. Надеюсь, кто-то может мне помочь. Заранее спасибо!

Solutions Collecting From Web of "Использование локального устройства ADB на устройстве (loopback) показывает отсутствие устройств"

Я считаю, что ваше устройство, возможно, перезагрузилось. Чтобы изначально получить ваш телефон в tcp, вы должны были adb tcpip 5555 с компьютера. Но это не длится вечно. Если ваш телефон перезагрузится, вам придется снова запустить adb tcpip 5555 с компьютера.

Я не уверен, что вы имели в виду, когда говорили:

Попытка перезапустить adb (d) в режиме TCP не увенчалась успехом (хотя это не было необходимо в рабочей ситуации). Adb tcpip 5555 возвращает ошибку: устройство не найдено.

Вы запустили это с компьютера? Если это было с компьютера, то я не уверен, в чем проблема. Но если это было с телефона, то он не может найти устройство для перехода на tcp.

Чтобы исправить это, должен работать adb tcpip 5555 с компьютера.