Nega a necessidade de um carro "com suporte para CarPlay™" e executa a UI do CarPlay diretamente no SpringBoard em um dispositivo iOS.
Funciona muito bem para iPads montados no painel!
Nota : Isso se destina principalmente a um iPad, e iPhones não são realmente suportados (no entanto, você "pode" usá-lo com um iPhone 6 Plus se realmente quiser).
Além disso, farei um relato formal sobre como tudo funciona quando tudo estiver concluído e utilizável.
Vrum vrum.
Para ser honesto, muitas dessas bobagens poderiam ser completamente evitadas se um FBSDisplay secundário "falso" pudesse ser criado e usado. Dessa forma, os SBApplications poderiam criar / possuir carScenes adequados e haveria muito menos coisas quebradas ...
A maior parte da lógica de verificação do CarPlay envolve a verificação de vários UIScreens, o UIScreen interfaceIdiom e FBSDisplay -> pesquisas FBScene. No entanto, criar um FBSDisplay falso requer a criação de um CADisplay falso, o que não é muito divertido: P
Basicamente, é assim que funciona (acho que... algumas partes provavelmente estão erradas ou erradas):
FrontBoard associa um FBSDisplay como tela principal e possui vários FBScenes que são o mainScene de cada SBApplication. Assim que houver um segundo FBSDisplay disponível, ele poderá gerar um carScene para cada SBApplication considerado capaz. Essas carScenes seriam então apresentadas em qualquer tela conectada externamente (FBSDisplay secundário).
Originalmente, eu tentei roubar um FBSDisplay sempre que ele foi criado e apenas duplicar essa tela em um objeto FBSDisplay secundário com o mesmo objeto CADisplay... e então empurrar esse objeto FBSDisplay em sua própria tabela de pesquisa para fazê-lo parecer como se fosse múltiplo telas estavam disponíveis. No entanto. isso faz com que o UIScreen surte, pois considera ambas as telas iguais. Também muitos sistemas operacionais não gostaram disso: P
O que estou fazendo é apenas fazer com que todas as UIScreens apareçam como telas do CarPlay, além de forçar a renderização de todos os aplicativos em paisagem (já que o CarPlay em telas externas é forçado a retrato). Além disso, isso significa que carScene de cada SBApplication é o mainScene, o que não garante sucesso.
Criar um servidor AirPlay local e depois hackear toques para trabalhar em uma visualização (cujo conteúdo é uma tela secundária projetada localmente, usando o dispositivo para AirPlay + espelhamento) pode ser uma solução interessante para isso, mas ainda não tentei. Isso nos daria um segundo FBSDisplay legítimo para brincar.
Eu usei Theos para isso. Você precisará instalá-los e configurar as variáveis de ambiente apropriadas, etc., bem como configurar. Informações sobre isso aqui.
O suporte ARM64 está habilitado por padrão e se você precisar de ajuda para configurá-lo, verifique aqui.
Estou usando meu próprio fork do theos, que por sua vez é bifurcado do fork do @rpetrich.
Se você editar o Makefile, poderá especificar o IP do seu dispositivo iOS e outros para compilar e executar usando make package install
. Caso contrário, você pode simplesmente make package
para gerar um arquivo .deb e instalá-lo por qualquer meio.
Totalmente grátis! Se você quiser apoiar minha continuação deste projeto (e de outros!), fique à vontade para doar! Seria muito apreciado :D
Praticamente a licença BSD, apenas não a reembale e chame-a de sua, por favor!
Além disso, se você fizer algumas alterações, sinta-se à vontade para fazer uma solicitação pull e ajudar a tornar as coisas mais incríveis!
Sinta-se à vontade para me seguir no Twitter: @b3ll!
Embora eu realmente não goste de lidar com solicitações de suporte lá ...
Travis Beckham pela imagem vetorizada do carro!