ขจัดความต้องการรถยนต์ "CarPlay รองรับ™" และเรียกใช้ CarPlay UI โดยตรงบน SpringBoard บนอุปกรณ์ iOS
ใช้งานได้ดีกับ iPad ที่ติดตั้งบนแผงหน้าปัด!
หมายเหตุ : สิ่งนี้มีไว้สำหรับ iPad เป็นหลัก และไม่รองรับ iPhone จริงๆ (แต่คุณ "สามารถ" ใช้กับ iPhone 6 Plus ได้ถ้าคุณต้องการจริงๆ)
นอกจากนี้ ฉันจะแน่ใจว่าได้เขียนอย่างเป็นทางการเกี่ยวกับวิธีการทำงานทั้งหมดเมื่อทั้งหมดนี้เสร็จสิ้นและใช้งานได้
วรูม วรูม.
พูดตามตรง เรื่องไร้สาระมากมายนี้สามารถหลีกเลี่ยงได้อย่างสมบูรณ์หากสามารถสร้าง FBSDisplay รอง "ปลอม" แล้วนำไปใช้ได้ ด้วยวิธีนี้ SBApplications สามารถสร้าง / เป็นเจ้าของ carScenes ที่เหมาะสมได้ และจะมีสิ่งที่เสียหายน้อยลงมาก...
ตรรกะการตรวจสอบ CarPlay ส่วนใหญ่เกี่ยวข้องกับการตรวจสอบทั้ง UIScreen หลาย UIScreen interfaceIdiom และ FBSDisplay -> การค้นหา FBScene อย่างไรก็ตาม การสร้าง FBSDisplay ปลอมจำเป็นต้องสร้าง CADisplay ปลอมซึ่งไม่ใช่เรื่องสนุกมากนัก :P
โดยพื้นฐานแล้วนี่คือวิธีการทำงาน (ฉันคิดว่า... บางส่วนอาจผิดหรือผิด):
FrontBoard เชื่อมโยง FBSDisplay หนึ่งรายการเป็นจอแสดงผลหลัก และมี FBScenes จำนวนมากซึ่งเป็นฉากหลักของ SBApplication แต่ละรายการ เมื่อมี FBSDisplay ที่สองพร้อมใช้งาน ก็สามารถสร้าง carScene สำหรับ SBApplication แต่ละรายการที่ถือว่ามีความสามารถได้ จากนั้น carScenes เหล่านี้จะถูกนำเสนอบนหน้าจอที่เชื่อมต่อภายนอก (FBSDisplay รอง)
เดิมทีฉันได้ลองใช้ FBSDisplay สูงทุกครั้งที่มันถูกสร้างขึ้นและเพียงแค่ทำซ้ำหน้าจอนั้นไปยังวัตถุ FBSDisplay รองด้วยวัตถุ CADisplay เดียวกัน ... จากนั้นผลักวัตถุ FBSDisplay นั้นลงในตารางการค้นหาของตัวเองเพื่อให้ ปรากฏ ราวกับว่ามีหลายรายการ หน้าจอพร้อมใช้งาน อย่างไรก็ตาม. สิ่งนี้ทำให้ UIScreen ประหลาดใจเมื่อเห็นว่าหน้าจอทั้งสองนั้นเหมือนกัน ระบบปฏิบัติการมากมาย ไม่ ชอบสิ่งนี้: P
สิ่งที่ฉันกำลังทำคือทำให้ UIScreen ทั้งหมดปรากฏเป็นหน้าจอ CarPlay ตลอดจนบังคับให้แอปพลิเคชันทั้งหมดแสดงผลในแนวนอน (เนื่องจาก CarPlay บนหน้าจอภายนอกถูกบังคับให้แสดงเป็นแนวตั้ง) นอกจากนี้ หมายความว่า carScene ของ SBApplication แต่ละรายการเป็น mainScene ซึ่งไม่ได้รับประกันความสำเร็จ
การสร้างเซิร์ฟเวอร์ AirPlay ในเครื่องแล้วแฮ็กการสัมผัสเพื่อทำงานบนมุมมอง (เนื้อหาที่เป็นหน้าจอรองที่ฉายในเครื่องโดยใช้อุปกรณ์เพื่อ AirPlay + การทำมิเรอร์) อาจเป็นวิธีแก้ปัญหาที่ดีสำหรับสิ่งนี้ แต่ฉันยังไม่ได้ลองเลย นั่นจะทำให้เรามี FBSDisplay ที่สองที่ถูกต้องตามกฎหมายในการเล่นด้วย
ฉันใช้ธีออสเพื่อสิ่งนี้ คุณจะต้องติดตั้งและตั้งค่าตัวแปรสภาพแวดล้อมที่เหมาะสม ฯลฯ รวมถึงการกำหนดค่า ข้อมูลเกี่ยวกับเรื่องนั้นที่นี่
การสนับสนุน ARM64 ถูกเปิดใช้งานตามค่าเริ่มต้น และหากคุณต้องการความช่วยเหลือในการตั้งค่า ให้ตรวจสอบที่นี่
ฉันใช้ส้อมของธีออสของตัวเอง ซึ่งในทางกลับกันจะแยกจากส้อมของ @ rpetrich
หากคุณแก้ไข Makefile คุณสามารถระบุ IP ของอุปกรณ์ iOS ของคุณและเพื่อสร้างและรันโดยใช้ make package install
มิฉะนั้นคุณสามารถ make package
เพื่อสร้างไฟล์ .deb และติดตั้งด้วยวิธีใดก็ได้
ฟรี! หากคุณต้องการสนับสนุนความต่อเนื่องของโครงการนี้ (และอื่น ๆ !) โปรดบริจาคได้เลย! จะได้รับการชื่นชมมาก :D
ใบอนุญาต BSD ค่อนข้างมาก เพียง อย่า บรรจุหีบห่อใหม่และเรียกเป็นของคุณเองได้โปรด!
นอกจากนี้ หากคุณทำการเปลี่ยนแปลงบางอย่าง อย่าลังเลที่จะส่งคำขอและช่วยทำให้สิ่งต่างๆ ยอดเยี่ยมยิ่งขึ้น!
ติดตามฉันได้ที่ Twitter: @b3ll!
แม้ว่าฉันจะไม่ชอบจัดการกับคำขอรับการสนับสนุนที่นั่นก็ตาม...
Travis Beckham สำหรับภาพรถแบบเวกเตอร์!