欢迎参加我们将于 6 月 3 日举行的 #Android11:Beta 版发布会

测试 Android 汽车应用

测试车辆应用可确保用户不会遭遇到意外的结果或糟糕的体验。用户可通过汽车控制台和手机屏幕访问您的应用,因此您需要针对这两种类型的屏幕测试 Auto 应用。此外,用户还可以在多种不同的模式下访问您的应用。

本文为您演示了如何针对这些用户访问模式测试应用。此外,本文提供了测试其他必要功能的说明。

测试 Android Automotive OS 应用

您可以使用 Android 模拟器测试您的驾驶员优化应用在 Android Automotive OS 车辆显示屏上的运行情况。本节介绍如何设置可用于测试应用的 Android 虚拟设备 (AVD)。

修改运行配置

Automotive OS 应用与其他 Android 应用有所不同。Android Automotive OS 使用显式 intent 和您的媒体浏览服务与您的应用互动。

要测试应用,请按照以下步骤验证您是否已将汽车模块设置为不启动任何 Activity:

  1. 在 Android Studio 中,依次选择 Run > Edit Configurations

    Run/Debug Configurations 对话框。

  2. 从应用中的模块列表中选择您的汽车模块。

  3. Launch Options > Launch 下,选择 Nothing

  4. 点击 Apply,然后点击 OK

添加系统映像

在创建符合特定制造商硬件要求的 AVD 之前,您需要先通过 Android Studio SDK 管理器为这些设备添加系统映像。以后创建 AVD 时,您可以下载这些系统映像以用于 AVD。

按照以下步骤为 Polestar 2 添加系统映像:

  1. 在 Android Studio 中,依次选择 Tools > SDK Manager
  2. 点击 SDK Update Sites 标签。
  3. 点击 Add Add 图标
  4. 输入以下 NameURL,再点击 OK

    Name:Polestar 2 System Image

    URL:https://developer.polestar.com/sdk/polestar2-sys-img.xml

  5. 点击 Apply,然后点击 OK

创建汽车 AVD 并运行模拟器

按照以下步骤创建代表 Android Automotive OS 车辆的 Android 虚拟设备 (AVD),然后使用该 AVD 运行模拟器:

  1. 在 Android Studio 中,依次选择 Tools > AVD Manager
  2. 点击 Create Virtual Device
  3. Select Hardware 对话框中,选择 Automotive,然后选择一个设备并点击 Next
  4. 选择以 Automotive 为目标的系统映像,如 Android 9.0 (Automotive),然后点击 Next
  5. 为您的 AVD 命名,再设置其他要自定义的选项,然后点击 Finish
  6. 在工具窗口栏中,选择您的 Android Automotive OS AVD 作为部署目标。
  7. 点击 Run Run 图标

针对 Android Auto 兼容车载显示屏测试应用

DHU 可让您的开发计算机模拟 Android Auto 音响主机,方便您轻松运行和测试 Android Auto 应用。DHU 可在 Windows、macOS 和 Linux 主机上运行。

本节介绍了如何在开发计算机上安装和运行 DHU,以便测试应用。安装 DHU 后,您可以通过 USB 连接手机和工作站来测试 Android Auto 应用。

安装 DHU

要在开发计算机上安装 DHU,请按以下步骤操作:

  1. 在移动设备上启用开发者模式,如启用设备上的开发者选项中所述。
  2. 在开发环境中编译应用,并在运行 Android 5.0(API 级别 21)或更高版本的实体移动设备上安装应用。要在 Nexus 设备上查看 Android 版本,请依次转到设置 > 关于手机(或关于平板电脑> Android 版本
  3. 在移动设备上安装 Android Auto 应用。如果已安装 Android Auto,请确保您使用的是最新版本。
  4. 打开 SDK 管理器,然后从“SDK Tools”标签下载 DHU 软件包 Android Auto Desktop Head Unit emulator。DHU 将安装到 <sdk>/extras/google/auto/ 目录。

如果您是在 Linux 上运行 DHU,还必须安装 portaudio、libpng、sdl2 和 sdl2_ttf 库。安装过程视 Linux 发行版而异。例如,在 Debian 衍生 Linux 发行版中,您可以使用以下命令安装这些库:

    $ sudo apt-get install libsdl2-2.0-0 libsdl2-ttf-2.0-0 libportaudio2 libpng12-0
    
包含开发者选项的上下文菜单

图 1. 包含开发者选项的上下文菜单。

表示音响主机服务器正在运行的通知

图 2. 表示音响主机服务器正在运行的通知。

安装 DHU 后,您可以通过 USB 连接手机和工作站来测试 Android Auto 应用。

运行 DHU

将移动设备连接到开发计算机并通过 Android 调试桥 (ADB) 建立与音响主机服务器的连接,以运行 DHU。要建立隧道并启动 DHU,请按以下步骤操作:

  1. 在 Android Auto 应用中,点按 Hamburger 菜单,然后点按 Settings
  2. 滚动到底部附近的 About 部分,再点按 Version 以显示所有版本和权限信息。
  3. 点按 Version and permission info 部分 10 次。

    系统会显示 Allow development settings 对话框。

  4. 点按 OK

    开发者模式现已启用,您可以在溢出菜单中访问开发者选项。您只需在首次运行 Android Auto 应用时启用开发者模式。

  5. 如果音响主机服务器尚未运行,请点按屏幕右上角的三个圆点以打开溢出菜单,然后选择 Start head unit server

    设备上的通知区域会显示前台服务。

  6. 在 Android Auto 应用中,按返回按钮返回主屏幕,然后打开抽屉式导航栏中的 Settings -> Connected cars,并确保启用“Add new cars to Android Auto”。
  7. 通过 USB 将移动设备连接到开发计算机。
  8. 确保移动设备的屏幕处于解锁状态,否则无法启动 DHU。
  9. 在开发计算机上,运行以下 adb 命令,将套接字连接从开发计算机的端口 5277 转发到 Android 设备上的相同端口号。此配置使 DHU 能通过 TCP 套接字连接到手机上运行的音响主机服务器。
        $ adb forward tcp:5277 tcp:5277
        
  10. <sdk>/extras/google/auto/ 目录运行 desktop-head-unit.exe 命令(Windows 上)或 ./desktop-head-unit 命令(Mac 或 Linux 上),以启动 DHU。
        $ cd <sdk>/extras/google/auto
        $ ./desktop-head-unit
        

    默认情况下,音响主机服务器通过端口 5277 进行连接。要替换主机或端口(例如,通过 SSH 转发),请使用 desktop-head-unit --adb <[localhost:]port> 标记,如以下示例所示:

        $ ./desktop-head-unit --adb 5999
        

    默认情况下,DHU 会模拟 Android Auto 兼容音响主机的最常见形式,这种形式会使用触摸屏界面。您可以通过鼠标点击 DHU 来模拟用户轻触操作。要模拟使用旋控器进行输入的音响主机,您可以使用 -i controller 标记,如下例所示:

        $ ./desktop-head-unit -i controller
        

    当 DHU 处于旋控器模式时,您可以使用键盘快捷键模拟控制器操作,如 DHU 命令和快捷键中所述。在旋控器模式下,DHU 会忽略鼠标点击;您必须使用模拟的旋控器操作来操控 Android Auto。

Android Auto 已在移动设备上启动

图 3. Android Auto 已在移动设备上启动。

DHU 已在开发计算机上启动

图 4. DHU 已在开发计算机上启动。

注意:您还可以使用 Media Controller 应用测试媒体集成。

设置并启动 DHU 后,您可以通过命令行运行 DHU 命令,从终端运行和测试应用。您还可以使用键盘快捷键运行这些命令。

发出 DHU 命令

借助 DHU 命令,您可以使用 Android Auto 功能测试应用,例如播放语音输入或在夜间和日间显示模式之间切换。您可以从启动了 DHU 的终端窗口向 DHU 发出命令,也可以通过选择 DHU 窗口并使用键盘快捷键发出命令。DHU 命令和快捷键中列出了所有控件的 DHU 命令和快捷键。

在日间模式和夜间模式之间切换

Android Auto 支持日夜两种颜色方案。您应该同时在日间和夜间模式下测试应用。您可以通过以下任一方式在夜间和日间模式之间切换:

  • 在您启动 DHU 的终端运行命令 daynight
  • 选择 DHU 窗口,然后按 N 键。

麦克风测试

DHU 支持使用麦克风进行语音输入。您也可以指示 DHU 将预录的语音音轨视为输入,就像 DHU 通过麦克风听到该音轨一样。

要将预录的声音文件用作输入,请输入以下命令:

    $ mic play <sound_file_path>/<sound_file>.wav
    

为方便起见,我们为常用语音命令提供了以下声音文件。这些声音文件安装在 <sdk>/extras/google/auto/voice/ 目录中。

exitnav.wav
“Exit navigation.”(退出导航。)
navgoogle.wav
“Navigate to 1600 Amphitheatre Parkway, Mountain View.”(导航到 1600 Amphitheatre Parkway, Mountain View。)
navsoh.wav
“Navigate to Sydney Opera House.”(导航到悉尼歌剧院。)
nextturn.wav
“When is my next turn?”(下一个转弯是什么时候?)
showalternateroute.wav
“Show alternate routes.”(显示备选路线。)
howlong.wav
“How long until I get there?”(多久才能到达那里?)
navhome.wav
“Navigate to home.”(导航到家。)
navwork.wav
“Navigate to work.”(导航到单位。)
pause.wav
“Pause music.”(暂停播放音乐。)
showtraffic.wav
“Show traffic.”(显示路况。)

DHU 命令和快捷键

DHU 支持以下命令。

表 1. 命令和快捷键

类别 命令 子命令 参数 键盘快捷键 说明
系统 help [命令] 显示完整的命令集。指定命令名称(例如 help day)会使系统显示该命令的帮助。
quit Alt + Q 退出音响主机。
sleep [秒] 休眠一秒。指定参数(例如,sleep 30)会使系统休眠指定的秒数。如果您要为 DHU 编写脚本,此命令非常有用。(您可以在命令行中使用 I/O 重定向运行脚本:./desktop-head-unit < script.txt 会加载来自文件 script.txt 的命令。)
screenshot filename.png 将屏幕截图保存为 filename.png
麦克风 mic begin M 激活麦克风(相当于按下方向盘上的麦克风按钮),然后等待计算机麦克风输入。
play filename.wav 使 DHU 将 filename.wav 视为语音输入,就好像该声音是通过麦克风输入的一样。您不会听到播放的声音文件,但您的确可听到 Android Auto 的响应。
repeat 重复最后一条 mic play 命令,就好像您使用相同的声音文件参数再次调用 mic play 一样。
输入 dpad up
down
left
right
箭头键 模拟旋控器的移动。
soft left
soft right
Shift + 箭头键 模拟按某些旋控器上的侧边按钮。
click Return 模拟按旋控器。
back Backspace 模拟按某些旋控器下方的后退按钮。
rotate left
rotate right
1
2
模拟旋控器向左(逆时针)或向右(顺时针)旋转。
flick left
flick right
Shift+1
Shift+2
模拟旋控器向左(逆时针)或向右(顺时针)快速旋转。
tap x y 模拟指定坐标处的轻触事件。例如,tap 50 100
日间/夜间 day Shift+N 激活日间模式(高亮度,全彩色)。
night Control + N 激活夜间模式(低亮度,高对比度)。
daynight N 切换当前日间/夜间模式。

针对手机屏幕测试应用

按照以下步骤将应用旁加载到手机上并进行测试。

第 1 步:在 Android Auto 应用中启用开发者模式和未知来源

  1. 在手机上安装 Google Play 上提供的 Android Auto 应用。如果已安装 Android Auto,请确保您使用的是最新版本。
  2. 在 Android Auto 应用中,点按 Hamburger 菜单,然后点按 Settings
  3. 滚动到底部附近的 About 部分,再点按 Version 以显示所有版本和权限信息。
  4. 点按 Version and permission info 部分 10 次。

    系统会显示 Allow development settings 对话框。

  5. 点按 OK
  6. 点按屏幕右上角的三个圆点以打开溢出菜单,然后点按 Developer Settings
  7. 点按 Application Mode,再选择 Developer

    应用会返回到开发者设置列表。

  8. 向下滚动,直到看到 Unknown sources,然后点按该复选框。
  9. 重新启动 Android Auto。

第 2 步:在手机上启用 USB 调试

  1. 设置 > 关于手机中,点按版本号七次以启用开发者选项。
  2. 返回到设置 > 开发者选项,启用 USB 调试

第 3 步:将您的应用安装到手机上并进行测试

  1. 通过 USB 将手机连接到计算机,以便在开发时将应用直接安装到手机上。使用 adb devices 命令确保开发计算机可以在通过 USB 连接时检测到您的设备。
  2. 设备设置完毕并通过 USB 连接后,导航至 SDK 的 platform-tools/ 目录,然后运行以下命令将 .apk 安装到设备上:

    adb -d install path/to/your/app.apk
        

    您现在可以测试您的应用,并验证是否一切正常。

其他测试要求

除了针对本文中介绍的各种用户访问模式测试应用外,您还应测试应用以确保其能够执行以下功能。

测试媒体应用“冷启动”

即使没有打开任何 Activity,Android Auto 媒体应用也应该能正常工作。在以下情况下,您的应用应做出适当响应:

  • MediaBrowserService 在任何 Activity 打开之前运行。
  • 用户没有登录。
  • 不能显示任何 Activity。

此外,测试以下情况:

  • 强行停止媒体应用,然后启动 Android Auto。
  • 清除媒体应用数据,然后启动 Android Auto。

如果应用无法执行请求的行为,请设置相应的错误消息