使用adb exec-out
命令代替adb shell
命令,可以强制新的adb
使用raw
模式并避免标准输出缓冲。
要了解更多信息,请查看shell_service.cpp中的注释。
我在使用adb 1.0.41时没有看到这种行为。
只有在使用tr删除"\r"时才会出现。在这种情况下,我使用以下命令:
adb command ... | stdbuf -o0 tr -d $'\r'
exec-out
或 shell
都是设备特定的。例如,我的 Galaxy Note 4 通过 shell
完美地流式传输事件数据(即:adb.exe shell getevent /dev/input/event2
),但是在使用 exec-out
(命令:adb exec-out getevent /dev/input/event2
)时会缓冲它并以大块方式发布。另一方面,Memu 模拟器的表现则完全相反。测试于 adb 版本 1.0.41(版本 30.0.5-6877874)。
adb shell
还是adb exec-out
。@alex-p - Anshuman Chatterjeeadb exec-out
。对于不支持adb shell V2
的设备,adb
客户端将自动协商使用旧的adb shell
协议。 - Alex P.