要验证和调试蓝牙堆栈,请使用 AOSP 中提供的工具以及蓝牙技术联盟 (SIG) 的测试。
测试和验证
为了测试蓝牙堆栈,AOSP 提供了一系列单元测试、CTS 测试以及用于 Bluetooth Profile Tuning Suite 的工具。
AOSP 中的单元测试
AOSP 包括默认蓝牙堆栈的功能测试和单元测试。这些测试位于 /packages/modules/Bluetooth/system/test/
中。要运行 AOSP 测试,请执行以下操作:
- 停止 Android 运行时
adb shell stop
- 从测试目录中,运行 shell 可执行文件,如果您想运行特定的测试或测试套件,请添加选项
./run_unit_tests.sh TEST_GROUP_NAME TEST_NAME OPTIONS
- 测试完成后,重新启用 Android 运行时
adb shell start
测试名称列表可以在 /packages/modules/Bluetooth/system/test/README.md
中找到。
Profile Tuning Suite
蓝牙技术联盟 (SIG) 提供了 Bluetooth Profile Tuning Suite (PTS),这是一种用于协议和配置文件互操作性的测试工具。如需了解详情,请参阅 Bluetooth Profile Tuning Suite 网站。
CTS 测试
兼容性测试套件 (CTS) 包括蓝牙堆栈的测试。这些测试位于 cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth
中。
调试选项
AOSP 提供了不同的调试设备蓝牙堆栈的方法,包括日志和错误报告。这些方法可能不适用于无法重现的问题或音频问题,音频问题可能会受到平台和设备的多个部分的影响。
使用错误报告进行调试
要使用 dumpsys
检查蓝牙服务状态,请使用以下命令:
adb shell dumpsys bluetooth_manager
默认情况下,所有日志消息均为跟踪级别 2。要详细了解日志记录级别并更改不同配置文件的日志记录级别,请查看 system/bt/conf/bt_stack.conf
。
要从错误报告中提取 snoop 日志,请使用 btsnooz
脚本。
- 获取
btsnooz.py
。 - 提取错误报告的文本版本。
- 在错误报告的文本版本上运行
btsnooz.py
btsnooz.py BUG_REPORT.txt > BTSNOOP.log
使用日志进行调试
在 Android 4.4 及更高版本中,您可以手动收集 BTSnoop 日志,这些日志类似于 RFC 1761 中的 snoop 格式。这些日志捕获主机控制器接口 (HCI) 数据包。对于大多数 Android 设备,日志存储在 data/misc/bluetooth/logs
中。
出于隐私原因,常时开启的“内存中”BTSnoop 仅记录非个人信息和事件。要记录所有数据,用户需要通过执行以下操作来启用蓝牙 HCI snoop:
- 在设备上启用开发者选项。
- 在开发者选项菜单中,激活启用蓝牙 HCI snoop 日志切换开关。
- 重启蓝牙以使日志记录生效。