Android 开发仔是时候考虑换一根数据线了

5,826 阅读4分钟

前言

由于我个人平时在睡前做的事情就是逛各个数码直播间,总想淘点稀奇玩意儿。其中我偏爱各种充电线,充电头,不过实属看的多买的少,不过对各种参数倒是越来越熟悉。直到有一天我发现一个比较冷门的产品, USB4 协议数据线。我突发奇想,用这玩意儿开发会不会快点?

背景调查

在实践之前我先搜一下看看有没有类似的文章,确保自己输出一些有用的信息给大家。于是我搜索了一番确实有一篇文章介绍 别让 USB 传输速度影响 Android 开发效率。不过文章比较古早,在当时并没有多少人关注。时至 2025 年科技圈的发展早已今非昔比,如今手机旗舰支持 USB 3.1 可谓是家常便饭,中端手机也开始支持 USB 3.0+。所以我需要用发展的眼光看待事情,时空轮转今非昔比。

实践

硬件设备介绍

  1. 电脑主板 华硕 ProArt Z790 支持双雷电 4 接口,USB 3.1 高速接口若干
  2. USB 4 数据线一根
  3. USB 2 数据线一根
  4. 小米 14 Pro

USB 4 数据线连接识别情况

数据线插到 雷电/USB3.1 的插口上电脑显示 image.png

数据线插到 USB 2.0 的插口上电脑显示 image.png

USB 2 数据线连接识别情况

image.png

USB 协议总结

既然是协议要多方达成一致才可以顺利,需要双端以及数据线都满足协议条件才可以正确握手。

打包测试

在这里我使用一个 1.42G 的 apk,使用 adb install -r -t test.apk 来进行测试。 测试数据大约如下:

  1. 使用 USB4 数据线多次安装测试: 12.70s
  2. 使用 USB2 数据线多次安装测试: 52.30s

看到上面的数据我们可能会发出这样的表情:

image.png

因为这个实际值跟理论值相差甚远。 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,他是雷电四的一个子集。如若本文能够为你每天省下一分钟的摸鱼时间,那也算我大功一件。