ADB:规范中缺少端口

时间:2019-03-14 08:48:26

标签: android adb android-sdk-tools

我最近已升级到Android SDK平台工具版本28.0.2。版本信息:

$ adb version
Android Debug Bridge version 1.0.40
Version 28.0.2-5303910

使用adb connect命令时,现在出现以下错误:

$ adb connect 192.168.1.20
missing port in specification: tcp:192.168.1.20

默认情况下,ADB以前已使用TCP端口5555连接到设备。我仍然可以通过指定以下端口号连接到我的设备:

$ adb connect 192.168.1.20:5555
connected to 192.168.1.20:5555

但是,这对我来说是一个小麻烦,因为我习惯于仅输入IP地址。有没有办法告诉此版本的ADB默认使用TCP端口5555?

7 个答案:

答案 0 :(得分:14)

这似乎是12月或1月引入的亚行内部的错误。我认为这与socket_spec.cpp中对此else语句的最新更改有关。

} else {
    std::string addr(spec.substr(4));
    port_value = -1;

    // FIXME: ParseNetAddress rejects port 0. This currently doesn't hurt, because listening
    //        on an address that isn't 'localhost' is unsupported.
    if (!android::base::ParseNetAddress(addr, &hostname_value, &port_value, serial, error)) {
        return false;
    }

    if (port_value == -1) {
        *error = "missing port in specification: ";
        *error += spec;
        return false;
    }
}

如果未指定端口值,则变量port_value初始化为-1,并且不变。此值也不会被android::base::ParseNetAddress更改。如果ParseNetAddress检查通过,那么之后我们总是会陷入错误捕捉语句。我已经filed a bug在Google上了。

答案 1 :(得分:5)

$ adb kill-server
$ adb connect 192.168.1.20

只需杀死adb服务器并正常连接即可。重新启动服务器后,将恢复默认端口(5555)。

答案 2 :(得分:3)

当我搜索Android版Visual Studio模拟器遇到的类似问题时,偶然发现了这个线程。当您尝试拖放* .apk文件进行安装时,它会给您同样的错误

我通过下载latest -working- platform-tools v27.0.1 from google并替换了android SDK文件夹中的内容(在我的情况下为%LOCALAPPDATA%\Android\Sdk)来解决了该问题。

我知道,这不是最好的解决方案,但是只要Google没有发布固定的adb版本(仍然不在v29.02中),我就可以接受。

答案 3 :(得分:2)

我可以通过在后缀位置添加端口号来连接我的android手机。

例如

$ adb kill-server

$ adb连接192.168.1.20:5555

直接无法连接,这给了我上面的错误。

注意::端口号是强制性的,可能您的端口号当前不同,请找到该端口号,然后尝试重新连接。

答案 4 :(得分:1)

只需在AndroidThings设备上将其标记为

必须交换

8
[1,4,7]

 adb connect Android.local

答案 5 :(得分:1)

还有另一种解决方法,可以在Google问题线程中记入this unknown person。创建一个自定义别名,该别名会自动将默认端口号添加到IP地址。

对于Linux和MacOS,在~/.bashrc~/.bash_aliases中:

function adbc() {
   adb connect $1:5555
}

然后使用命令连接

$ adbc 192.168.1.20

对于Windows用户:

  

将其放入adbc.batPATH的任何位置

@echo off
adb connect %1:5555

然后使用命令连接

> adbc 192.168.1.20

答案 6 :(得分:1)

设置Android设备的端口将解决此问题。

方法如下:

  1. 将具有USB的Android设备连接到已安装adb的计算机(Linux,MacO或其他设备)。
  2. 执行adb tcpip <port_number>。这会将设备设置为带有端口的TCP模式,尽管该设备当前可能未使用以太网或WiFi。这将使port_value不等于-1或未定义。
  3. 通过USB断开Android设备与计算机的连接。
  4. adb connect <IP address>:<port number> 这应该连接设备。该设备应显示在adb devices的结果中。

当我使用Pixel 3 XL“通过以太网进行adb”和“通过无线进行adb”时,它为我工作。