16

我正在尝试在 Android 设备本身上使用 ADB,因此没有任何主机。几天前它工作得很好,但它突然停止工作。据我所知,从那时起没有任何变化(例如,没有(未)安装应用程序)。我可以adb backup -f /sdcard/backup.ab <package-name>在终端仿真器中使用,它会开始备份那个包。当我现在尝试时,它会返回adb: unable to connect for backup. 调查使用adb devices返回一个空列表。我以前从不费心检查设备,我只是直接使用我的 adb 命令,因为一切正常。

这是在运行 Android 4.4.2、ADB 版本 1.0.31 的 HTC Desire 上。在我的电脑上使用这款手机的 ADB 运行良好,但这不是我想要的。

我试过的

  • 我尝试在不同的设备上执行相同的操作(4.4.2 上的 Asus PadFone 2、4.4.2 上的三星 Galaxy Note GT-N7000、4.1.2 上的 Sony Xperia S。)但adb devices在所有设备上都返回一个空列表。我开始想知道为什么这首先对我的 HTC Desire 有效。
  • 搜索 Google 和 Stack Overflow,但大多数(如果不是全部)结果是指驱动程序问题或涉及主机的任何其他问题。
  • 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。所以这里也没有成功。
  • 使用(返回 192.168.1.xx)查找我的本地 IP getprop dhcp.wlan0.ipaddress,然后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 问题跟踪器上的这个线程。然而,它描述了一个问题,即在使用后setprop service.adb.tcp.port 5555adb devices至少显示一个设备,但是离线(即localhost:5555 offline)。在线程快要结束时,我们找到了一个解决方案,其中涉及更改 $HOME 目录以更改 RSA 密钥的保存位置,例如HOME=/sdcard. 然后有必要使用 . 将公钥附加到 /data/misc/adb/adb_keys 中cat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys。但是,我认为这需要root?此外,在工作情况下,所有这些都不是必需的,所以我怀疑我的问题的解决方案是否可以在这个方向上找到。本文,源自 AOSP 问题跟踪器的线程,没有提及附加公钥。然而,上述方法并不成功。
  • 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过程:

    • 用户:外壳 PID:92 PPID:1 VSIZE:3624 RSS:264 WCHAN:ffffffff PC:00000000 S 名称:/sbin/adbd
    • 用户:u0_a57 PID:9754 PPID:1 VSIZE:3016 RSS:988 WCHAN:ffffffff PC:4014f768 S 名称:adb
    • (从终端执行的命令以 USER: u0_a57 身份执行。)

我想差不多就是这样。

我正在寻找一种不需要 root 的解决方案,因为我以前使用它时不需要它。我希望我的情况和问题很清楚。如果我的问题需要改进,请告诉我,因为这是我第一次在 Stack Overflow 上发帖。希望有人可以帮助我。提前致谢!

4

1 回答 1

-2

我相信您的设备可能已重新启动。要最初让您的手机进入 tcp,您必须adb tcpip 5555从计算机上运行。但这不会永远持续下去。如果您的手机重新启动,那么您将不得不adb tcpip 5555再次从计算机运行。

我不确定你说的是什么意思:

尝试在 TCP 模式下重新启动 adb(d) 是不成功的(即使在工作情况下这不是必需的)。adb tcpip 5555 返回错误:找不到设备。

你是从电脑上运行的吗?如果它来自计算机,那么我不确定那里有什么问题。但是如果是从手机上来的,那就找不到要改成tcp的设备了。

要解决此问题,adb tcpip 5555从计算机应该可以工作。

于 2016-12-13T17:27:23.037 回答