ADB:规范中缺少端口

新手上路,请多包涵

我最近升级到 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?

原文由 Michael Dodd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 684
2 个回答

更新

此错误现已从 ADB 版本 1.0.41 开始修复,它是平台工具版本 29.0.4 的一部分。该错误的修复已于 2019 年 7 月 31 日 提交:

恢复 adb connect 的默认端口。

默认端口 5555 不久前被删除,但帮助文本从未更新,其他上下文仍然允许使用默认端口。

漏洞: https ://issuetracker.google.com/128561172

输入 adb connect 192.168.1.20 没有尾随端口号现在会导致 ADB 连接到目标设备,恢复以前的行为。

旧答案

这似乎是 ADB 中的一个错误,于 2018 年 12 月或 2019 年 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 检查通过,那么我们总是会立即陷入错误捕获语句。

原文由 Michael Dodd 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

例如,

$ adb kill-server

$ 亚行连接 192.168.1.20: 5555

直接无法连接,它给了我上述错误。

注意: 端口号是必须申请的,可能你的端口号当前不同所以请找到那个然后重新尝试连接。

原文由 Siddharth 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏