本文介绍了一些与 Android 音频调试有关的提示和技巧。
Tee Sink
“tee sink”是一种 AudioFlinger 调试功能,仅在定制 build 中提供,用于获取最近音频的短片段以供日后分析。
这方便我们比较实际播放或录制的内容与预期内容。
出于隐私考虑,tee sink 在编译时和运行时均默认处于停用状态。如需使用 tee sink,您需要通过重新编译以及设置属性来启用它。完成调试后,请务必停用此功能;tee sink 在正式 build 中不能处于启用状态。
本部分中的说明适用于 Android 7.x 及更高版本。对于 Android 5.x 和 6.x,请将 /data/misc/audioserver 替换为 /data/misc/media。此外,您还必须使用 userdebug 或 eng build。如果您使用 userdebug 版本,请使用以下命令停用 verity:
adb root && adb disable-verity && adb reboot
编译时设置
cd frameworks/av/services/audioflinger
修改 Configuration.h。
取消备注 #define TEE_SINK。
重新构建 libaudioflinger.so。
adb root
adb remount
将新的 libaudioflinger.so 推送或同步到设备的 /system/lib。
运行时设置
adb shell getprop | grep ro.debuggable
确认输出是:[ro.debuggable]: [1]
adb shell
ls -ld /data/misc/audioserver
确认输出是:
drwx------ media media ... media
如果目录不存在,请按如下方式创建:
mkdir /data/misc/audioserver
chown media:media /data/misc/audioserver
echo af.tee=# > /data/local.prop
其中,af.tee 值是一个数字,在下文中有所说明。
chmod 644 /data/local.prop
reboot
af.tee 属性的值
af.tee 的值是一个介于 0 到 7 之间的数字,表示几个位的总和(每个功能一个位)。请查看位于 AudioF