前言
由于我个人平时在睡前做的事情就是逛各个数码直播间,总想淘点稀奇玩意儿。其中我偏爱各种充电线,充电头,不过实属看的多买的少,不过对各种参数倒是越来越熟悉。直到有一天我发现一个比较冷门的产品, USB4 协议数据线。我突发奇想,用这玩意儿开发会不会快点?
背景调查
在实践之前我先搜一下看看有没有类似的文章,确保自己输出一些有用的信息给大家。于是我搜索了一番确实有一篇文章介绍 别让 USB 传输速度影响 Android 开发效率。不过文章比较古早,在当时并没有多少人关注。时至 2025 年科技圈的发展早已今非昔比,如今手机旗舰支持 USB 3.1 可谓是家常便饭,中端手机也开始支持 USB 3.0+。所以我需要用发展的眼光看待事情,时空轮转今非昔比。
实践
硬件设备介绍
- 电脑主板 华硕 ProArt Z790 支持双雷电 4 接口,USB 3.1 高速接口若干
- USB 4 数据线一根
- USB 2 数据线一根
- 小米 14 Pro
USB 4 数据线连接识别情况
数据线插到 雷电/USB3.1 的插口上电脑显示
数据线插到 USB 2.0 的插口上电脑显示
USB 2 数据线连接识别情况
USB 协议总结
既然是协议要多方达成一致才可以顺利,需要双端以及数据线都满足协议条件才可以正确握手。
打包测试
在这里我使用一个 1.42G 的 apk,使用 adb install -r -t test.apk
来进行测试。
测试数据大约如下:
- 使用 USB4 数据线多次安装测试: 12.70s
- 使用 USB2 数据线多次安装测试: 52.30s
看到上面的数据我们可能会发出这样的表情:
因为这个实际值跟理论值相差甚远。
USB 2.0 的理论传输速度是 480Mb/s,注意这里的 b 是 bit,也就是实际传输速度需要除以 8,考虑到损耗,合理应该在 50M/s,按照这个速度也是应该 30s 就该传输结束了呢。
USB4 的数据线虽然上线是 40Gb/s 但是由于协议匹配,只能握手 USB 3.1,实际理论最大上传速度是 10Gb/s, 按理来说 2s 左右足矣,何故耗时甚高?
由于 Android App 开发实际使用到的协议是 ADB,是在 USB 基础上封装而成,外加了一系列安全,完整性的校验,让实际传输速度与理论值相差甚远。不过虽说 ADB 传输速度损耗巨大,但是传输速度可是跟 USB 协议成正相关的,倘若你的测试手机支持 USB 3.0+,那么我建议你买一根 USB 4.0 的数据线。为啥买 USB 4.0 呢,主要是这类数据线都是为了作为显示器的连接线,量大,便宜,市场上很容易买得到,很少有单独开发的 USB 3.0,3.1 的数据线。可能他们之间的价格也不会差太多,在此推荐大家买一根 USB 4 的双 C 数据线。
这里不建议使用 WiFi adb 大安装包,传输速度很感人,有时候你会想哭
再论 ADB
前面的章节说到 ADB 传输速度损失比较大,那么 Android 官方有没有意识到这个问题呢?
答案是显而易见的,Android 官方也觉得 ADB 传输速度比较 💩,希望从 adb 36.0.0,启用一项名为 adb 突发模式,这个功能是实验性的,默认关闭的,通过上面的链接教程打开这一开关,实测会对安装速度提升不少。
小米 14 Pro USB4.0 数据线,多数安装大多数时间分布在 6-8s 内,对比之前的 12s 提升可谓不小,不过其并不是很稳定,有一次传输时间竟然达到了 22s 之多。总体而言是提升了传输速度,但是由于是实验性的功能,结果不是很稳定,波动较大。
相关代码
// if ADB_HOST
bool burst_mode_enabled() {
static const char* env = getenv("ADB_BURST_MODE");
static bool result = env && strcmp(env, "1") == 0;
return result;
}
// end if
const FeatureSet& supported_features() {
static const android::base::NoDestructor<FeatureSet> features([]() {
// clang-format off
FeatureSet result {
kFeatureShell2,
...
};
// if ADB_HOST
if (burst_mode_enabled()) {
result.push_back(kFeatureDelayedAck);
}
// else
result.push_back(kFeatureDelayedAck);
// end if
return result;
}());
结尾
别忘了查看你的测试手机是不是支持 USB 3.0+,查看方法到上面的文章里面取,还有买手机送的数据线多是不支持 USB 3.0+ 的,有需求的请自己去买,还有就是 USB 4 不等于 雷电 4,他是雷电四的一个子集。如若本文能够为你每天省下一分钟的摸鱼时间,那也算我大功一件。