我最近已升级到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?
答案 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.bat
中PATH
的任何位置@echo off adb connect %1:5555
然后使用命令连接
> adbc 192.168.1.20
答案 6 :(得分:1)
设置Android设备的端口将解决此问题。
方法如下:
adb tcpip <port_number>
。这会将设备设置为带有端口的TCP模式,尽管该设备当前可能未使用以太网或WiFi。这将使port_value不等于-1或未定义。adb connect <IP address>:<port number>
这应该连接设备。该设备应显示在adb devices
的结果中。当我使用Pixel 3 XL“通过以太网进行adb”和“通过无线进行adb”时,它为我工作。