
在车机智能化的浪潮中,Apple CarPlay 凭其极简的 UI 与流畅的交互以及与iPhone一致的体验,成为了许多车主的必备功能。然而如果想在普通的 Android 车机或车机系统上使用 CarPlay,用户通常只能购买像 CarlinKit(车连易)这样的第三方 USB 硬件转接盒,并搭配其闭源的 APK 文件使用。
最近,开源社区涌现出了多个无需传统盒子或基于原生硬件芯片的独立 CarPlay 接收端开源项目,其中最瞩目的莫过于 xcertplay 和 DiPlay。
DiPlay:https://github.com/shihabal3amri/DiPlay
xcertplay :https://github.com/shilapi/xcertplay
xcertplay 和 DiPlay 把“车机端”直接做进 Android APK。iPhone 不越狱,也不需要 Mac 或账号服务器。车机要能装 APK,无线还要有蓝牙和可用的热点或 Wi-Fi Direct。
核心技术原理:CarPlay 接收端是如何工作的?
要在非苹果认证设备(如 Android 车机、Mac/PC 浏览器)上实现 CarPlay 协议,核心在于突破 Apple 的三个技术关卡:
1. 协议协商与身份认证(iAP2 & MFi)
Apple 规定 CarPlay 设备必须包含 MFi(Made for iPhone)硬件加密芯片,通过 iAP2 协议完成双向认证。
硬件方案:直接读取车机板载的 MFi 芯片,或利用 USB-to-UART/TTL 芯片(如 CH341)挂载 MFi 芯片。
软件/公钥密钥方案:利用泄露或提取的认证证书/密钥对(xcert),在软件层模拟 MFi 握手。
2. 无线引导与链路建立(BT + Wi-Fi Handoff)
蓝牙:iPhone 首先通过蓝牙与接收端建立 iAP2 连接并交换密钥。
Wi-Fi 切换:随后接收端启动 Wi-Fi 热点(或运行 Bonjour / mDNS 服务广播 _airplay._tcp)。
RTSP 握手:iPhone 自动关闭蓝牙音频,切换至 Wi-Fi 并通过 RTSP 协议握手,建立数据传输通道。
3. 媒体解码与反向控制(Media Stream & HID Control)
视频流:iPhone 将屏幕渲染为 H.264 / HEVC 视频流发送给接收端,接收端通过 Android 的 MediaCodec(或 WebCodecs)进行硬件解码渲染。
音频流:媒体音、导航音、Siri/通话音通过 RTP 协议独立传输。
触控与控制:接收端捕获屏幕触摸坐标、物理按键/旋钮输入,转换为标准 HID(Human Interface Device)报告反向发送给 iPhone。
xcertplay vs. DiPlay
虽然 xcertplay 和 DiPlay 都致力于在 Android 车机上运行独立的 CarPlay 接收端,但它们的技术走向与硬软件依赖有明显区别:

与 CarPlay 相关的一些项目:
https://github.com/serein-morii/DiPlay-CN DiPlay汉化版
https://github.com/youcci/playport 把 DiPlay / xcertplay 的 AirPlay、iAP2、配件认证移植到 Kotlin/JVM 服务端,浏览器当屏幕,不装车机 APK
https://github.com/catplay-labs/catplay 面向无线盒子固件(Carplay2Air),仍要求 MFi 芯片,和 Android APK 路线不同
https://github.com/andreknieriem/open-headunit 面向无线盒子固件(Carplay2Air),仍要求 MFi 芯片,和 Android APK 路线不同
https://github.com/shilapi/ch341-to-mfi-chip xcertplay 配套的 CH341 到 MFi 转接板