验证和调试

如需验证和调试蓝牙堆栈,请使用 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

Bluetooth SIG 提供了 Bluetooth Profile Tuning Suite (PTS),这是一种用于测试协议和配置文件互操作性的工具。如需更多信息,请访问 Bluetooth Profile Tuning Suite 网站。

CTS 测试

兼容性测试套件 (CTS) 包括针对蓝牙堆栈的测试。这些测试位于以下位置: cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth

调试选项

AOSP 提供了多种调试设备蓝牙堆栈的方法,其中包括日志和 bug 报告。这些方法可能不适用于无法再现的问题或可能受平台和设备的多个部分影响的音频问题。

使用错误报告进行调试

如需使用 dumpsys 检查蓝牙服务状态,请使用以下命令:

adb shell dumpsys bluetooth_manager

默认情况下,所有日志消息的跟踪级别均为 2。如需详细了解日志记录级别,并更改不同配置文件的日志记录级别,请查看 system/bt/conf/bt_stack.conf

如需从 bug 报告中提取信息收集日志,请使用 btsnooz 脚本。

  1. 获取 btsnooz.py
  2. 提取 bug 报告的文本版本。
  3. 对 bug 报告的文本版本运行 btsnooz.py
    btsnooz.py BUG_REPORT.txt > BTSNOOP.log

使用日志进行调试

在 Android 4.4 及更高版本中,您可以手动收集 BTSnoop 日志(类似于 RFC 1761 中的信息收集格式)。这些日志可捕获主机控制器接口 (HCI) 数据包。对于大多数 Android 设备,这些日志都存储在 data/misc/bluetooth/logs 中。

出于保护隐私方面的考虑,始终处于开启状态且位于“内存中”的 BTSnoop 仅会记录非个人信息和事件。要记录所有数据,用户需要通过执行以下操作来启用蓝牙 HCI 信息收集:

  1. 启用设备上的开发者选项
  2. 开发者选项菜单中,打开启用蓝牙 HCI 信息收集日志开关。
  3. 重新启动蓝牙以使日志记录功能生效。