1 Star 0 Fork 0

HengHengSir / Ignition

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Ignition

Negates the need for a "CarPlay supported™" car, and runs the CarPlay UI directly on top of SpringBoard on an iOS device.

Works great for iPads mounted on the dash!

Note: This is primarily meant for an iPad, and iPhones aren't really supported (however you "can" use it with an iPhone 6 Plus if you really want to).

Also, I'll be sure to do a formal write-up on how it all works once all of this is finished and useable.

Vroom vroom.

Screenshot1
Screenshot2
Screenshot3
Screenshot4

Explanation

To be honest a lot of this nonsense could be completely avoided if a secondary "fake" FBSDisplay could be created and then used. That way SBApplications could create / own proper carScenes and there'd be a lot less things that were broken...

Most of the CarPlay checking logic involves checking for both multiple UIScreens, the UIScreen interfaceIdiom, and FBSDisplay -> FBScene lookups. However, creating a fake FBSDisplay requires creating a fake CADisplay which isn't a lot of fun :P

Basically here's how it works (I think... some parts are probably wrong or off):

FrontBoard associates one FBSDisplay as the main display and has a bunch of FBScenes which are each SBApplication's mainScene. Once there's a second FBSDisplay available it can then generate a carScene for each SBApplication who's deemed capable. These carScenes would then be presented onto any externally connected screens (secondary FBSDisplay).

Originally, I had tried high-jacking a FBSDisplay whenever it was created and just duplicating that screen into a secondary FBSDisplay object with the same CADisplay object... and then shoving that FBSDisplay object into it's own lookup table to make it appear as if multiple screens were available. However. this causes UIScreen to freak out as it deems both those screens as the same. Also loads of the OS did not like this :P

What I'm doing is just making all UIScreens appear as CarPlay screens as well as forcing all applications to render in landscape (as CarPlay on external screens is forced to portrait). In addition this means that each SBApplication's carScene is the mainScene, which doesn't guarantee success.

Creating a local AirPlay server and then hacking touches to work on a view (who's contents are a secondary screen projected locally, using the device to AirPlay + mirroring) could be a neat solution to this, but I haven't tried it yet. That would grant us a legitimate second FBSDisplay to play with.

How do I compile?

I used Theos for this. You'll need to install them and setup the appropriate environment variables etc as well as configuring. Info on that here.

ARM64 support is enabled by default and if you need help setting that up check here.

I'm using my own fork of theos, which is in-turn forked from @rpetrich's fork.

If you edit the Makefile you can specify your iOS device's ip and such to build and run using make package install. Otherwise you can simply make package to generate a .deb file and install that by any means.

Price?

Totally free! If you'd like to support my continuation of this project (and others!), feel free to donate! It'd be much appreciated :D

License?

Pretty much the BSD license, just don't repackage it and call it your own please!

Also if you do make some changes, feel free to make a pull request and help make things more awesome!

Contact Info?

Feel free to follow me on twitter: @b3ll!
Though I don't really like to handle support requests there...

Special Thanks

Travis Beckham for the vectorized car image!

空文件

简介

Runs the CarPlay UI directly on top of SpringBoard on an iOS device, no need for a car! 展开 收起
Logos
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Logos
1
https://gitee.com/hengheng88/Ignition.git
git@gitee.com:hengheng88/Ignition.git
hengheng88
Ignition
Ignition
master

搜索帮助