为啥 VTS 失败并出现不准确的 adb 错误?

Posted

技术标签:

【中文标题】为啥 VTS 失败并出现不准确的 adb 错误?【英文标题】:Why VTS fails with inaccurate adb error?为什么 VTS 失败并出现不准确的 adb 错误? 【发布时间】:2018-06-22 09:32:55 【问题描述】:

我运行 VTS 测试套件,但我的测试 100% 失败并出现此一致错误:

AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:1489'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:1922'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:4950'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:1566'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:7793'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:4126'. ret: 1, stdout: , stderr: error: more than one device/emulator
AdbError: Error executing adb cmd 'adb -s 10.1.1.5:5555 reverse tcp:5010 tcp:3753'. ret: 1, stdout: , stderr: error: more than one device/emulator

消息是stderr: error: more than one device/emulator,但如果我用adb devices 列出,我只会得到一台设备

List of devices attached
10.1.1.5:5555   device

在 VTS 提示符中相同:

vts-tf > l d
Serial                  State   Allocation  Product         Variant         Build            Battery  
10.1.1.5:5555       ONLINE  Allocated   dev_prod    dev_prod    6/22/2018.025   100      

我与被测设备的连接不是通过 USB 而是通过以太网。

为什么adb 看到more than one device/emulator,因为事实并非如此?

有谁知道端口5010 服务于什么以及为什么被重定向(reverse)到随机端口1489, 1922, 4950 等?

【问题讨论】:

【参考方案1】:

似乎它不适用于通过以太网的adb 连接,您需要通过 USB 的adb 连接。

由于构建是在服务器上,我发现此解决方法可在通过 USB 直接连接到 DUT 的机器上运行 vts,执行以下步骤:

1) 重启 DUT

2) 杀死旧的adb 并检查 USB 是否已连接

sudo killall -9 adb
adb devices

3) 然后尝试通过sshfs 挂载从服务器上的构建运行 vts:

sudo apt-get install sshfs
mkdir android
sudo groupadd fuse
sudo modprobe fuse
sudo adduser $USER fuse
fusermount -uz ./android
sshfs user@server:/storage/user/android-build/ ./android
cd android
cd ./out/host/linux-x86/vts/android-vts/tools/
pushd `pwd` && cd ./out/host/linux-x86/bin && export PATH=$PATH:$(pwd) && popd
./vts-tradefed

【讨论】:

以上是关于为啥 VTS 失败并出现不准确的 adb 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的贝宝 api 调用失败并出现错误版本不支持?

为啥mysql PDO不会在失败时抛出错误[重复]

为啥 Flutter 构建失败并出现错误无法解析配置“:app:debugRuntimeClasspath”的所有文件

为啥会出现以下错误:“尝试附加到数据库失败,并显示以下信息:用户 'x\x' 登录失败。?

为啥 Ambari 集群设置在 zookeeper 安装时失败并出现符号链接错误?

CRC校验为啥能够保证数据的准确性(出错率很低很低)