DuoDash 在你的车载屏幕上并排运行两个应用,把 CarPlay 平时不显示的应用也搬上去,并围绕它们加入导航、语音和性能方面的控制。
下面列出的都在当前版本中。没有列出的就没有。如果某项功能需要可选硬件,或者有值得事先了解的副作用,会在它自己的小节里说明。
DualApps
DualApps 就是车载屏幕上的 DuoDash 界面。它把屏幕分成若干窗格,各运行一个不同的应用,这样地图可以一直留在你看得见的地方,同时你在旁边用音乐、信息或别的东西。
点按 CarPlay 主屏幕上的 DuoDash 图标即可打开,或者开启 Auto Start,让它在 CarPlay 连接几秒后自动打开。
- 空的窗格会提示你挑选一个应用。点它就能打开应用选择器。
- 已经在运行应用的窗格,会在顶部中间显示一根浅色小横条。按这根横条就能更换该窗格的应用。它会在几秒后淡出,以免挡住应用;当你按窗格顶部或与之交互时又会重新出现。
- 正在某个窗格中运行的应用,在另一个窗格里会显示为灰色。同一个应用不能被载入两次。

Screen Layout
Screen Layout 决定车载屏幕分成几个窗格,以及它们各自的位置。共有八种布局可选,每个窗格都运行自己的应用。
- 一个窗格,占满整个屏幕。
- 两个窗格并排。
- 两个窗格上下叠放。
- 三个窗格并排,呈列状。
- 一个通高窗格,旁边是上下叠放的两个窗格——高的那个可以在左边,也可以在右边。
- 一个通宽窗格位于顶部或底部,另一半是并排的两个窗格。
每个窗格都运行自己的应用,所以三窗格布局会有三个应用同时在屏幕上绘制。这比两个窗格更吃手机性能,兼容性页面说明了更重的组合需要什么。
App Picker
应用选择器会覆盖在你正在更换的那个窗格上。应用会按需要铺开成若干页;左右滑动切换,底部的圆点表示你在第几页。点按图标即可把该应用载入窗格。
它的顶部一排,左边是 Resize,中间是 Settings,右边是关闭按钮。
Resize 用来改变屏幕在两个窗格之间的划分方式。点 Resize,拖动中间的六点手柄,直到两个窗格达到你想要的大小,然后点 Apply。只有当你确实移动过分隔线后,Apply 才会出现;不点应用直接关闭,则布局保持原样。
地图这类较重的应用,第一次载入窗格时可能需要 10–25 秒才能把界面画出来。

App Bridge
App Bridge 让那些平时不会出现在 CarPlay 里的应用也能用在车载屏幕上。打开它,在列表中勾选你想要的应用,它们就会以图标的形式出现在车机主屏幕上。
你可以随时增删应用,无需重启 DuoDash。
列表分为 My Apps 和 System Apps 两组,车内的应用选择器显示的是 My Apps。如果某个应用分到了错误的分组,横向滑动它所在的一行即可移动。

Navigation Bubble
导航气泡会把限速信息和测速摄像头提醒显示在车载屏幕上,数据取自你指定的导航应用。
选择导航应用,选择气泡出现在两个窗格中的哪一个上方,还可以选择在超过它显示的限速时闪烁并发出提示音。
只有当指定的应用正在两个窗格之一中运行时,气泡才会从它读取数据。如果该应用只在 iPhone 上打开,iOS 过一会儿就会把它挂起,气泡便会一直空着。Navigation Bubble 界面上的 Keep provider awake 会请求应用在后台保持唤醒——这会耗电,所以默认关闭,而且只有在指定应用支持时才有效。

Voice Command
Voice Command 会改变方向盘语音按键的功能。把它指向某个应用,按键就会打开该应用的语音搜索,而不是 Siri。不选任何应用,按键则照常唤起 Siri。

HUD Device
DuoDash 可与 DuoDash HUD 配对——那是一块选配的抬头显示器,安装在挡风玻璃附近。它通常随车通电;配对是 DuoDash 设置里的一个开关,设置界面会显示连接状态以及 HUD 上运行的固件版本。
配对会把 HUD 绑定到一台手机上:一旦配对,它只认这台手机,而不会连接恰好在附近的任意手机。
要换到另一台手机,请先在当前手机上解除配对。如果那台手机已经不可用,长按 HUD 上的 BOOT 键约三秒,它就会忘记已配对的手机并重启。
HUD 是独立的硬件。本页上的其他所有功能没有它也能用。

Performance Tweak
五个可选开关分别关乎电量、发热、内存,以及 CarPlay 连接与断开时的行为。安装后五个开关都是关闭的,DuoDash 把这一区块标记为 beta,如果某个开关不适合你的配置,可以单独关掉。
- Deep Sleep——车辆熄火、iPhone 断电后,应用被暂停,Wi-Fi、蓝牙和定位都会关闭;来电后,DuoDash 会把整个环境一并恢复。它是为常驻车内的手机而写的,下面单独有一节说明。
- Optimize CPU And Thermal——让性能较弱的 iPhone 也能运行 DuoDash 而不至于产生太多热量。
- Close Unloaded Pane Apps——当你把某个应用换出窗格时,被替换掉的应用会被关闭,而不是留在后台继续运行,从而为真正显示在屏幕上的内容腾出内存。
- Auto Start——在 CarPlay 连接几秒后自动打开 DualApps,这样你每次上车都不用再去点图标。
- Close Apps on CarPlay Disconnect——在 CarPlay 断开约 12 秒后,关闭那些原本在车载屏幕上运行的应用。这段延迟的用意是:短暂掉线不至于把所有东西都关掉。
在打开这些开关之前,有一个后果值得先弄清楚:任何会关闭应用的行为,也会中断该应用正在播放的音频,而被关闭的应用不会自己重新打开。
Optimize CPU And Thermal 会重启 iPhone 主屏幕,约需 15 秒,并且要等 CarPlay 重新连接后才会生效——请拔掉再插上数据线,或断开再重连无线 CarPlay。

Deep Sleep
Deep Sleep 是为一种特定配置而写的:常驻车内的 iPhone。常见的 DuoDash 安装方式,是用一台较旧或便宜的 iPhone 作为专用 CarPlay 设备,接到车辆电源上,藏在仪表台后面、手套箱、中控台或其他看不见的地方。
停在车里的手机并不是闲着的。即便屏幕关着,iOS 仍在运行后台应用、网络活动、蓝牙与无线服务、定位服务和系统守护进程,再加上 DuoDash 自身的组件以及你装的其他一切——对一台从不离开车子的手机来说,单是这些后台消耗,就足以在短得惊人的时间里把电池耗光。
电池耗尽意味着手机关机,而在很多越狱方案上,关机意味着必须手动恢复越狱环境,DuoDash 才能重新运行。这在口袋里的手机上只是麻烦,在仪表台饰板后面的手机上就是真正的问题。
所以 Deep Sleep 改为跟随车辆的供电状态:
- 车辆启动。电力恢复,手机唤醒,DuoDash 重新建立它所需要的环境——自身的服务、你配置好的应用与集成、CarPlay 组件、App Bridge 以及它们背后的后台进程——于是车载屏幕自己就亮起来了,你不用去够那台手机。
- 车辆熄火。供电消失,DuoDash 开始让手机进入休眠,挂起或关闭它不需要的应用、服务和后台活动,直到手机在保持开机的前提下把功耗降到实际可能的最低水平。
Deep Sleep 不是关机,而这正是关键所在。它不会关闭 iPhone,也不会重启它,因为在许多配置下,重启恰恰就是让你丢掉越狱的原因。它让系统继续运行,转而把工作量拿掉。
停放中的手机能撑多久
在电池健康良好、配置合理的前提下,Deep Sleep 的目标是让专用手机在停放的车辆中待上大约 10 天到两周而不至于耗尽电量。
请把它当作这项功能所围绕的目标,而不是用来安排行程的数字。真实的待机时间会随 iPhone 型号、电池健康度与容量、iOS 版本、越狱方案、已装插件、蜂窝信号、无线配置、后台服务、温度、DuoDash 自身的配置,以及手机上运行的其他一切而变化。
Deep Sleep 能减缓耗电,但无法消除耗电,而且没有任何设置能弥补一块已经老化的电池。电池衰退的旧手机,续航会明显低于上面给出的范围。
在把手机装进你够不着的地方之前
固定安装的方案,值得在手机还拿在手里时先测试一遍。
- 确认电池状况尚可。停放期间手机能撑多久,取决于电池的程度,超过 DuoDash 所做的任何事。
- 给它一个可靠的随车开关电源——车辆运行时有电、熄火后确实断电,因为这正是 Deep Sleep 所依据的信号。
- 确认充电方案适合长期固定放置。
- 不要把手机放在会过热的位置。
- 在把手机装进饰板后面之前,先完整跑几轮循环——启动、熄火、Deep Sleep、唤醒。
不要在你随身携带的手机上开启 Deep Sleep。它的省电策略是刻意做得很激进的:它会挂起个人手机理应保持运行的应用和服务,而且车辆停放期间 Wi-Fi、蓝牙和定位都保持关闭——所以当你需要蓝牙配件或个人热点时,它们并不在。
Headunit Info
DuoDash 会报告所连接车载屏幕的分辨率,以及为该分辨率推荐的视频画质——例如 1280 × 480 与 480p。
播放远超车机主机显示能力的视频,只会让 iPhone 多做处理,而你并不会多看到什么,代价则是发热和耗电。把视频应用设成推荐画质或更低,就能避免这种浪费。
这些数值会在 iPhone 与车辆连接过一次之后填入。在此之前它们显示为 Unknown。
Splash Screen
DualApps 启动时会在车载屏幕上显示几秒钟的启动画面。DuoDash 内置三种设计——Mountain Road、City Skyline 和 Light Trails——你选中的那一种会在下次启动 DualApps 时出现。第四个选项是 None,即完全不显示启动画面。

语言
DuoDash 已翻译成 17 种语言。语言在 DuoDash 自己的设置里选择,并立即应用于设置界面和车载屏幕。它不会改变 iPhone 的系统语言。
Tweak Management
Tweak Management 是 DuoDash 的扩展方式。与其让每个开发者都重新实现一遍与车辆、CarPlay 环境和仪表盘界面的通信,DuoDash 把这些做成可复用的 Core Tweaks,第三方插件只需与它们对接即可。
插件会向 DuoDash 注册自己——名称、开发者、版本、目标应用、所支持的 Core Tweaks 以及所需能力——随后 DuoDash 会把它列在设置中的 Tweak Management 下,与自家插件的状态并列显示。
在 Tweak Management 界面上,你可以看到已安装了哪些兼容模块,开关它们,配置它们所支持的项目,并查看每一个的信息与状态。
扩展模块是独立的软件包
在你去找某项功能之前,这一点值得先弄清楚。每个扩展模块都是独立的软件包,与 DuoDash 分开安装。安装 DuoDash 并不会把该界面所能管理的所有模块都装上,在那里看到某一项,也不代表它已经在你的手机上。
每个模块都有自己的实现和要求,并且独立于 DuoDash 核心进行安装、配置、更新和卸载。这是有意为之:它让 DuoDash 本身不必与每一项可选功能绑死,也让模块的改动不必等待 DuoDash 发版。
所以这里有两样不同的东西。DuoDash 核心是应用桥接、CarPlay 集成、界面,以及扩展接口本身。扩展模块则是使用这些接口、需单独安装的软件包。Tweak Management 里存在某个选项,并不意味着它背后的模块随 DuoDash 一起提供。
DuoDash 提供什么,模块提供什么
DuoDash 提供接口,以及展示结果的位置。它不需要知道某个具体的导航应用、语音服务或数据源内部是怎么工作的——那部分由模块负责,并以 DuoDash 能理解的形式把信息交过来。
Application / System ──► Extension Module ──► DuoDash Interface ──► CarPlay
导航模块是最清楚的例子。它从受支持的导航应用中读取导航信息,转换成 DuoDash 的格式,再送进导航接口——而正是这个接口把它显示到车载屏幕上:
Navigation App ──► Navigation Module ──► DuoDash Navigation Interface ──► Navigation Bubble
Voice Command 也是同样的道理:DuoDash 提供接收车辆与 CarPlay 事件的接口,兼容模块则把这些事件接到某个特定的应用或服务上。由于模块是独立的,这一行为可以在不改动 DuoDash 本身的情况下演进——而且不同的导航应用可以各自拥有模块,不必让 DuoDash 为每一个都内置专用代码。
两套扩展契约都已公开并有文档,因此任何人都可以为 DuoDash 未覆盖的应用编写模块。这并不改变上一段所说的:每个模块仍然是独立的软件包,界面上的一行并不等于手机上的一个模块。

状态与崩溃报告
DuoDash 会汇报自身状况。它的状态通常是 OK;如果反复遇到问题,它会关闭自家的插件以保持手机稳定,而 Re-enable DuoDash Tweaks 可以把它们重新打开。这个操作会让 iPhone 主屏幕重启约 15 秒。
当 DuoDash 出现异常时,崩溃报告器会收集诊断信息。生成一份报告最多可能需要一分钟。
在当前版本中,报告只保存在手机上,不会发送到任何地方——上报服务器还没有就位。
请在车辆停放时配置 DuoDash。行车过程中请勿操作视频、设置或任何会分散注意力的内容,并遵守你所在地区的交通法规。
准备好升级你的 CarPlay 体验了吗?
DuoDash 通过 Chariz 发行。请先确认你的 iPhone、越狱方案和车机主机都在支持范围内。