"CarPlay 지원™" 자동차의 필요성을 없애고 iOS 장치의 SpringBoard 위에서 직접 CarPlay UI를 실행합니다.
대시보드에 장착된 iPad에 적합합니다!
참고 : 이는 주로 iPad용이며 iPhone은 실제로 지원되지 않습니다(그러나 정말로 원한다면 iPhone 6 Plus에서 "사용"할 수 있습니다).
또한, 이 모든 작업이 완료되어 사용 가능해지면 모든 작업이 어떻게 작동하는지에 대한 공식적인 글을 확실히 작성하겠습니다.
부릉부릉.
솔직히 말해서, 보조 "가짜" FBSDisplay를 생성하여 사용할 수 있다면 이런 말도 안되는 일을 완전히 피할 수 있습니다. 그런 식으로 SBApplications는 적절한 carScenes를 생성/소유할 수 있고 깨진 것들이 훨씬 줄어들 것입니다...
대부분의 CarPlay 확인 논리에는 여러 UIScreen, UIScreen 인터페이스Idiom 및 FBSDisplay -> FBScene 조회를 모두 확인하는 작업이 포함됩니다. 그러나 가짜 FBSDisplay를 만들려면 가짜 CADisplay를 만들어야 하는데 별로 재미가 없습니다. :P
기본적으로 작동 방식은 다음과 같습니다(제 생각에는... 일부 부분이 잘못되었거나 잘못되었을 수 있습니다).
FrontBoard는 하나의 FBSDisplay를 기본 디스플레이로 연결하고 각 SBApplication의 mainScene인 여러 FBScene을 갖습니다. 사용 가능한 두 번째 FBSDisplay가 있으면 가능하다고 간주되는 각 SBApplication에 대해 carScene을 생성할 수 있습니다. 그런 다음 이러한 carScene은 외부에 연결된 모든 화면(보조 FBSDisplay)에 표시됩니다.
원래는 FBSDisplay가 생성될 때마다 하이재킹을 시도하고 해당 화면을 동일한 CADisplay 개체가 있는 보조 FBSDisplay 개체로 복제한 다음 해당 FBSDisplay 개체를 자체 조회 테이블에 밀어넣어 마치 여러 개의 개체처럼 보이 도록 했습니다. 스크린을 사용할 수 있었습니다. 하지만. 이로 인해 UIScreen이 두 화면을 모두 동일한 것으로 간주하므로 놀라게 됩니다. 또한 많은 OS가 이것을 좋아하지 않았습니다 :P
내가 하고 있는 일은 모든 UIScreen을 CarPlay 화면으로 표시하고 모든 응용 프로그램을 강제로 가로 모드로 렌더링하는 것입니다(외부 화면의 CarPlay는 세로 모드로 강제 실행됨). 또한 이는 각 SBApplication의 carScene이 성공을 보장하지 않는 mainScene임을 의미합니다.
로컬 AirPlay 서버를 생성한 다음 터치를 해킹하여 보기 작업을 수행하는 것(콘텐츠는 AirPlay + 미러링을 위한 장치를 사용하여 로컬로 투사되는 보조 화면임)이 이에 대한 깔끔한 해결책이 될 수 있지만 아직 시도하지 않았습니다. 그러면 우리는 합법적인 두 번째 FBSDisplay를 사용할 수 있게 됩니다.
나는 이것을 위해 Theos를 사용했습니다. 이를 설치하고 적절한 환경 변수 등을 설정하고 구성해야 합니다. 이에 대한 정보는 여기에 있습니다.
ARM64 지원은 기본적으로 활성화되어 있으며 설정하는 데 도움이 필요하면 여기에서 확인하세요.
나는 @rpetrich의 포크에서 차례로 포크된 나만의 theos 포크를 사용하고 있습니다.
Makefile을 편집하면 iOS 장치의 IP 등을 지정하여 make package install
사용하여 빌드하고 실행할 수 있습니다. 그렇지 않으면 간단히 make package
.deb 파일을 생성하고 어떤 방법으로든 설치할 수 있습니다.
완전 무료입니다! 제가 이 프로젝트(및 다른 프로젝트)를 계속 진행하도록 지원하고 싶으시다면 자유롭게 기부해 주세요! 정말 감사하겠습니다 :D
거의 BSD 라이센스입니다. 다시 패키지 하지 말고 자신만의 라이센스라고 부르세요!
또한 몇 가지 사항을 변경했다면 자유롭게 끌어오기 요청을 하여 일을 더욱 멋지게 만드는 데 도움을 주세요!
트위터 @b3ll에서 저를 팔로우해주세요!
비록 그곳에서 지원 요청을 처리하고 싶지는 않지만...
벡터화된 자동차 이미지를 위한 Travis Beckham!