adb 启动弱网:am start 指令与参数写法
adb 驱动弱网的第一条指令是启动:拉起 QNET 的专用入口组件,并把弱网参数一次性带上。这一页把指令结构拆开讲,示例可以直接抄改。
指令结构
adb shell am start {--[类型] [key] [value]} com.tencent.qnet/.Component.AdbStartActivity
- 固定尾部
com.tencent.qnet/.Component.AdbStartActivity是 QNET 的 adb 启动入口组件; - 花括号位置放若干「类型 + 键 + 值」三元组,类型只有两种:
--ei传整数,--es传字符串; - 不带任何参数直接执行,则按进程内当前状态启动。
官方示例:对微信做 UDP 上行 50ms 延迟抓包
adb shell am start --ei "dump_pcap" 1 --es "package_name" "com.tencent.mm" --ei "out_delay" 50 --ei "protocol" 2 com.tencent.qnet/.Component.AdbStartActivity
四个参数逐个读:
| 片段 | 含义 |
|---|---|
| --ei dump_pcap 1 | 开启抓包,pcap 生成在应用缓存目录 |
| --es package_name com.tencent.mm | 只对微信生效(指定应用的 adb 等价物) |
| --ei out_delay 50 | 上行延迟 50ms |
| --ei protocol 2 | 仅 UDP(协议编号见协议与 IP 控制) |
常用启动组合
- 全局高延迟回归:
--ei in_delay 300 --ei out_delay 300 - 全局断网压测:
--ei in_rate 100 --ei out_rate 100 - 对指定包名限速:
--es package_name "com.example.app" --ei in_bandwidth 1024 --ei out_bandwidth 512
键值的完整清单(带宽、丢包、Burst、协议、IP、悬浮窗等全部参数)见adb 参数速查表。
执行后的验证
- 指令回执为 Starting activity 即已拉起;
- 设备状态栏出现 VPN 图标,工作台进入运行态;
- 用信息悬浮窗或实测延迟确认参数生效,判读方法见信息悬浮窗读数。
两个易错点
- 多包名写法:package_name 支持竖线分隔多个应用,如 "com.a|com.b",留空为全局生效;
- 权限前置:设备没跑过手工授权(VPN/悬浮窗)时,首次指令启动会卡在授权页,先手工跑一遍首次启动的三道授权。
启动后要中途改参数,不必重启进程:见动态更新弱网参数。