验证和调试

要验证和调试蓝牙堆栈,请使用 AOSP 中提供的工具以及蓝牙技术联盟 (SIG) 的测试。

测试和验证

为了测试蓝牙堆栈,AOSP 提供了一系列单元测试、CTS 测试以及用于 Bluetooth Profile Tuning Suite 的工具。

AOSP 中的单元测试

AOSP 包括默认蓝牙堆栈的功能测试和单元测试。这些测试位于 /packages/modules/Bluetooth/system/test/ 中。要运行 AOSP 测试,请执行以下操作:

  1. 停止 Android 运行时
    adb shell stop
  2. 从测试目录中,运行 shell 可执行文件,如果您想运行特定的测试或测试套件,请添加选项
    ./run_unit_tests.sh TEST_GROUP_NAME TEST_NAME OPTIONS
  3. 测试完成后,重新启用 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 脚本。

  1. 获取 btsnooz.py
  2. 提取错误报告的文本版本。
  3. 在错误报告的文本版本上运行 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:

  1. 在设备上启用开发者选项
  2. 开发者选项菜单中,激活启用蓝牙 HCI snoop 日志切换开关。
  3. 重启蓝牙以使日志记录生效。