
开源项目 AARE 尝试在手机上复现 Android Auto 手机端功能
来源标题:AARE: A proof-of-concept open-source implementation of Android Auto
开源项目 AARE 重新实现了 Android Auto 的手机端,让手机直接与车机通信并投屏。协议栈已在模拟车机和 Google 桌面车机上测试,并在两辆真实汽车上分别通过无线和 USB 验证。项目仍处早期,作者提醒驾驶时不要依赖它。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
AARE 是 Android Auto 手机端的开源重实现。手机通过 Android Auto 投影协议(AAP)与车机通信,自行绘制车机屏幕,并运行 Google 的 Android Auto 所排斥的应用:
这是早期软件。协议栈已针对模拟车机、AARE 自带的桌面车机以及 Google 的 Desktop Head Unit 测试到证书校验环节(见下文)。目前已在两辆真车上试过,一辆走无线、一辆走 USB(见“在真实车机上测试过”)。在你自己的车上试过之前,开车时别依赖它。
部分 状态 协议:分帧、TLS 1.2(手机作为服务端)、版本、服务发现、通道 已完成,有单元测试和回环测试 视频:私有虚拟显示的 H.264 硬件编码、ack 流控、焦点、关键帧恢复 已完成 自适应视频码率:车机或弱无线链路跟不上时降低,恢复后回升 新增,未在硬件上测试 竖屏车机:底栏、堆叠式仪表盘、CarPlay 模式 新增,仅用桌面车机的 --portrait 测试过 触摸、按键、旋钮控制器、方向盘语音/媒体/主页/返回键 已完成 传感器:驾驶限制、夜间模式、车载 GPS 和指南针(传给导航应用) 已完成 车机提供的其他所有传感器(转速、里程、油量和续航、温度、HVAC、车门、灯光、胎压、加速度计、陀螺仪……),供车载应用(car hardware API)和助手使用 新增,仅用桌面车机的模拟车辆测试过 Car App Library 宿主:握手、模板、地图表面、导航行程、提醒、车载硬件、麦克风 已完成 模板渲染(列表、网格、窗格、消息、搜索、登录、标签页、导航、地图……) 已完成 媒体应用:浏览、搜索、正在播放、播放控制、活动会话跟踪 已完成 消息应用:从通知中读取会话、朗读、标记已读、驻车时回复 新增 逐向导航到仪表盘,正在播放信息到车机 已完成 仪表盘视频(带仪表盘显示屏的车):导航应用的仪表盘地图,或 AARE 的转向卡片 新增,仅用桌面车机的 --cluster 测试过 来自手机上 Google Maps、Waze……的导航指令,显示在仪表盘和仪表盘屏上 新增,未用 Google Maps 和 Waze 测试过 手机屏幕投到车上,支持触摸 新增,未在硬件上测试 手机音频传到车上:屏幕采集、Shizuku,或类似 Android Auto 的系统音频路由(音乐和导航语音分开) 屏幕采集已测试;Shizuku 和系统路由为新增,未测试 语音助手以覆盖在屏幕上的横条形式出现,带车载工具 新增,未在车上测试 车机麦克风传给应用(任何 CarAudioRecord 应用) 已完成 手机状态传到车机(通话状态、来电者姓名和照片、信号)、电量;车机的通话键可接听和挂断 新增,仅用桌面车机测试过 车机报告下溢后增加音频缓冲 新增,未在硬件上测试 USB(AOA) 已完成,在一台车机上测试过(见“在真实车机上测试过”) 无线(蓝牙引导 + Wi-Fi + TCP) 已完成,在一台车机上测试过(见“在真实车机上测试过”) 通过 adb 的开发者车机服务端(DHU、openauto、Headunit Revived),可选局域网 TCP 5277 已完成 尚未完成 Android Auto 或协议提供、而 AARE(还)不做的功能。 不计划做(罕见,或与 AARE 自己绘制的功能重复):
一台 Android 8 或更新版本的手机。部分功能需要更新的 Android:
在 Android 17 上,无线车机和车机服务端的网络模式还需要“本地网络”权限(设置过程中会询问):没有它,Android 会静默断开与车机的连接。
一台接受 AARE 证书的车机(见“兼容性”),或一台运行桌面车机的电脑。
从 releases 下载 aare-<version>.apk,在手机上打开,或执行 adb install -r aare-<version>.apk。每个 release 还附带 Magisk 模块(已 root 的手机,见“车载音频”)和桌面车机。
Release 使用 AARE 的发布密钥签名,SHA-256 为 63:EF:0D:E1:DB:2C:09:BB:7F:B2:5C:E7:EA:4A:DC:35:38:AF:42:3B:88:52:78:B5:9D:F2:88:9C:7F:18:28:6F。 你自己构建的版本使用你自己的调试密钥签名,因此在两者之间切换需要先卸载。
由于基于 Google 官方宿主实现的车机会校验 AARE 的证书/密钥,要使用这些车机,需要提取密钥:
下载 Android Auto/com.google.android.projection.gearhead 的 APKm,例如从 APKPure 或 APKMirror 对 apkm 运行 extract_key.py:./extract_key.py com.google.android.projection.gearhead.apkm 密钥和证书分别是 carservice_key.pem 和 carservice_cert.pem。把它们复制到手机上。 用 AARE 打开这两个文件。现在它应该能与该车机配合工作。
在手机上打开 AARE,完成“完成设置”:权限、通知访问(用于消息、来自 Google Maps 和 Waze 的导航指令以及正在播放信息)和车载音频(见“车载音频”)。
看一下各个设置页面(车机屏幕、应用、语音助手、消息、车载音频、连接)。它们与 Android Auto 的对应。
把手机插到车机的 Android Auto USB 口。无线的话,先用蓝牙与车机配对。
想不接车试一下,点“预览车机屏幕”:它会在手机上以相同的应用显示车机界面,或者使用下面的桌面车机。
横条布局与 Android Auto 一样:在驾驶员一侧的侧边,或沿底部(设置中的“车机屏幕”)。它包含:
仪表盘显示地图(或来自 Google Maps 或 Waze 的导航指令)、正在播放的内容以及下一个日历事件,如果你选了壁纸则覆盖在壁纸上。在非常宽的屏幕(1920x720 及以上)上,它并排显示三张卡片。天气来自 Open-Meteo(无需账号,不经过 Google),按大致位置(约 10 公里)请求;你可以关掉它。
仪表盘屏。在车机提供仪表盘显示屏的车上,AARE 像 Android Auto 一样向它发送自己的视频:当导航应用支持时,发送该应用的仪表盘地图
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。