无需“支持 CarPlay™”汽车,并直接在 iOS 设备上的 SpringBoard 之上运行 CarPlay UI。
非常适合安装在仪表板上的 iPad!
注意:这主要适用于 iPad,并不真正支持 iPhone(但如果您确实愿意,您“可以”将其与 iPhone 6 Plus 一起使用)。
另外,一旦所有这些都完成并可用,我一定会写一篇正式的文章来说明它是如何工作的。
呜呜呜。
老实说,如果可以创建并使用辅助“假”FBSDisplay,则可以完全避免很多这种废话。这样 SBApplications 就可以创建/拥有适当的汽车场景,并且损坏的东西会少很多......
大多数 CarPlay 检查逻辑涉及检查多个 UIScreen、UIScreen 接口 Idiom 和 FBSDisplay -> FBScene 查找。然而,创建一个假的 FBSDisplay 需要创建一个假的 CADisplay,这不是很有趣:P
基本上这是它的工作原理(我认为......某些部分可能是错误的或关闭的):
FrontBoard关联一个FBSDisplay作为主显示,并且有一堆FBScene,它们是每个SBApplication的mainScene。一旦有第二个 FBSDisplay 可用,它就可以为每个被认为有能力的 SBApplication 生成一个 carScene。然后,这些汽车场景将呈现在任何外部连接的屏幕上(辅助 FBSDisplay)。
最初,我曾尝试在创建 FBSDisplay 时对其进行劫持,然后将该屏幕复制到具有相同 CADisplay 对象的辅助 FBSDisplay 对象中...然后将该 FBSDisplay 对象推入其自己的查找表中,使其看起来像是多个屏幕可用。然而。这会导致 UIScreen 崩溃,因为它认为这两个屏幕是相同的。操作系统的负载也不喜欢这样:P
我正在做的只是让所有 UIScreens 显示为 CarPlay 屏幕,并强制所有应用程序以横向渲染(因为外部屏幕上的 CarPlay 被迫纵向渲染)。此外,这意味着每个 SBApplication 的 carScene 都是 mainScene,这并不能保证成功。
创建本地 AirPlay 服务器,然后修改视图(其内容是本地投影的辅助屏幕,使用设备进行 AirPlay + 镜像)可能是一个巧妙的解决方案,但我还没有尝试过。这将为我们提供一个合法的第二个 FBSDisplay 来玩。
我为此使用了Theos。您需要安装它们并设置适当的环境变量等以及配置。有关于此的信息请参见此处。
默认情况下启用 ARM64 支持,如果您需要设置方面的帮助,请在此处查看。
我正在使用我自己的 theos 分支,它又是从 @rpetrich 的分支中分叉出来的。
如果编辑 Makefile,您可以指定 iOS 设备的 IP 等以使用make package install
进行构建和运行。否则,您可以简单地make package
来生成 .deb 文件并通过任何方式安装它。
完全免费!如果您想支持我继续这个项目(以及其他项目!),请随时捐赠!非常感谢 :D
几乎是 BSD 许可证,只是请不要重新打包并称其为您自己的许可证!
另外,如果您确实做了一些更改,请随时提出拉取请求并帮助让事情变得更棒!
欢迎在 Twitter 上关注我:@b3ll!
虽然我不太喜欢在那里处理支持请求......
特拉维斯·贝克汉姆的矢量化汽车图像!