尝试通过TCP通过adb连接到Android设备时显示“错误:已关闭”

洛根·丁

我正在ARMv7开发板上构建Android系统。由于某种原因,我想使用“ adb shell”从PC上操纵系统。由于Android系统使用NFS服务器作为其根文件系统,因此开发板和PC通过以太网连接。这是我尝试过的方法(我在Android设备上具有root用户访问权限):

在Android设备上(通过带腻子的串行端口访问):

android@ubuntu:~$ setprop service.adb.tcp.port 5555
android@ubuntu:~$ stop adbd
android@ubuntu:~$ start adbd

在Ubuntu主机上:

android@ubuntu:~$ adb connect 192.168.0.85:5555
connected to 192.168.0.85:5555
android@ubuntu:~$ adb shell
error: closed
android@ubuntu:~$ adb devices
List of devices attached
192.168.0.85:5555       device

如消息所示,通过adb的连接似乎成功(已连接到...),但是我无法对其进行“ adb shell”操作。最奇怪的是,我仍然可以看到通过“ adb设备”连接的设备。

我试图杀死adb服务器并重新启动它,但是它也不起作用。

洛根·丁

我研究了的源代码adb,并使用gdb对其进行了调试,最后找到了根本原因。

基本上,为了响应host命令adb shelladbd(运行在Android设备上的守护程序)应打开一个伪终端,并派生另一个运行shell的子进程。这些是通过以下create_subproc_pty功能实现system/core/adb/services.c

static int create_subproc_pty(const char *cmd, const char *arg0, const char *arg1, pid_t *pid)
{
    ....

    int ptm;

    ptm = unix_open("/dev/ptmx", O_RDWR | O_CLOEXEC); // | O_NOCTTY);
    if(ptm < 0){
        printf("[ cannot open /dev/ptmx - %s ]\n",strerror(errno));
        return -1;
    }

    ....

    *pid = fork();
    if(*pid < 0) {
        printf("- fork failed: %s -\n", strerror(errno));
        adb_close(ptm);
        return -1;
    }

    ....
}

我在开发板上发现该unix_open功能失败。这是因为PTY驱动程序未内置在内核中,因此/dev/ptmx在系统上找不到该设备。

要解决此问题,只需选择Character Devices - Unix98 PTY驱动程序并重建内核,然后即可adb shell使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android-通过wifi通过adb连接到设备

来自分类Dev

通过ADB连接到Docker容器中的USB Android设备

来自分类Dev

SQLITE_ERROR:从Spark通过JDBC连接到SQLite数据库时,连接已关闭

来自分类Dev

将Android设备连接到Macbook热点(通过Wifi)

来自分类Dev

传递通过USB连接到Azure中VM的Android设备

来自分类Dev

修正:无法通过wifi连接到adb

来自分类Dev

在GetReponse()上但不是通过浏览器获取“基础连接已关闭:发送时发生意外错误”

来自分类Dev

通过IP连接到路由器时DNS错误

来自分类Dev

通过终端连接到蓝牙设备

来自分类Dev

底层连接已通过linkedin关闭

来自分类Dev

无法通过 SSH 从主机 Mac OS 连接到来宾 Ubuntu:主机已关闭

来自分类Dev

如何通过IOS中的TCP套接字查找其他已连接设备的延迟

来自分类Dev

通过关闭连接流关闭错误

来自分类Dev

Java尝试通过退出连接到MQ

来自分类Dev

Java尝试通过退出连接到MQ

来自分类Dev

通过 TCP/IP 连接到 python.exe 失败 - TCP 循环错误中的未捕获异常

来自分类Dev

通过 adb 检查 android 设备指纹状态

来自分类Dev

Android Maps通过USB插入设备时显示空白(黑屏)

来自分类Dev

android设备已连接到wamp服务器,但在listview中未显示任何内容

来自分类Dev

ADB错误:连接设备时找不到设备

来自分类Dev

如何通过GUI通过ADB在Android设备之间传输文件?

来自分类Dev

尝试从可视c#程序更新oracle时出现“无效操作。连接已关闭”错误

来自分类Dev

通过wifi连接到android studio后,在android设备上测试应用程序时出错

来自分类Dev

将PC连接到Mobie设备时,“由于目标主机已关闭,导致套接字操作失败”

来自分类Dev

通过蓝牙将一台Android设备作为免提设备连接到另一台设备

来自分类Dev

在WSL 2上通过Docker连接到TCP服务器时出现问题

来自分类Dev

错误:无法通过ssh连接到主机

来自分类Dev

通过朋友的WiFi通过VPN连接到我家的网络时,找不到我的设备

来自分类Dev

通过TCP的ADB连接现在无法正常工作

Related 相关文章

  1. 1

    Android-通过wifi通过adb连接到设备

  2. 2

    通过ADB连接到Docker容器中的USB Android设备

  3. 3

    SQLITE_ERROR:从Spark通过JDBC连接到SQLite数据库时,连接已关闭

  4. 4

    将Android设备连接到Macbook热点(通过Wifi)

  5. 5

    传递通过USB连接到Azure中VM的Android设备

  6. 6

    修正:无法通过wifi连接到adb

  7. 7

    在GetReponse()上但不是通过浏览器获取“基础连接已关闭:发送时发生意外错误”

  8. 8

    通过IP连接到路由器时DNS错误

  9. 9

    通过终端连接到蓝牙设备

  10. 10

    底层连接已通过linkedin关闭

  11. 11

    无法通过 SSH 从主机 Mac OS 连接到来宾 Ubuntu:主机已关闭

  12. 12

    如何通过IOS中的TCP套接字查找其他已连接设备的延迟

  13. 13

    通过关闭连接流关闭错误

  14. 14

    Java尝试通过退出连接到MQ

  15. 15

    Java尝试通过退出连接到MQ

  16. 16

    通过 TCP/IP 连接到 python.exe 失败 - TCP 循环错误中的未捕获异常

  17. 17

    通过 adb 检查 android 设备指纹状态

  18. 18

    Android Maps通过USB插入设备时显示空白(黑屏)

  19. 19

    android设备已连接到wamp服务器,但在listview中未显示任何内容

  20. 20

    ADB错误:连接设备时找不到设备

  21. 21

    如何通过GUI通过ADB在Android设备之间传输文件?

  22. 22

    尝试从可视c#程序更新oracle时出现“无效操作。连接已关闭”错误

  23. 23

    通过wifi连接到android studio后,在android设备上测试应用程序时出错

  24. 24

    将PC连接到Mobie设备时,“由于目标主机已关闭,导致套接字操作失败”

  25. 25

    通过蓝牙将一台Android设备作为免提设备连接到另一台设备

  26. 26

    在WSL 2上通过Docker连接到TCP服务器时出现问题

  27. 27

    错误:无法通过ssh连接到主机

  28. 28

    通过朋友的WiFi通过VPN连接到我家的网络时,找不到我的设备

  29. 29

    通过TCP的ADB连接现在无法正常工作

热门标签

归档