กายวิภาคของ macOS App Bundles

Admin

มีอะไรอยู่ในแอพ macOS และทำอะไรได้บ้าง แอพ macOS ดูเหมือนไฟล์แบบเสาหิน แต่จะเหมือนโฟลเดอร์ที่มีไอคอนแฟนซีที่เรียกว่าบันเดิลมากกว่า เปิดบันเดิลเหล่านั้นแล้วคุณจะพบอาร์เรย์ของไฟล์ที่แอปพลิเคชันต้องการ ทั้งหมดนี้ทำอะไร? ความเข้าใจในชุดรวมเหล่านี้มีประโยชน์สำหรับนักพัฒนา ผู้ดูแลระบบ ม็อดเกม ผู้สร้าง Hackintosh ผู้ใช้ที่เกี่ยวข้องกับความปลอดภัย และใครก็ตามที่แก้ปัญหาแอป

ที่เกี่ยวข้อง: MacOS App Sandboxing ปกป้องผู้ใช้อย่างไร

macOS App Bundle คืออะไร?

เนื่องจาก กำหนดโดย Appleบันเดิลคือ "ไดเร็กทอรีที่มีโครงสร้างแบบลำดับชั้นที่เป็นมาตรฐานซึ่งมีโค้ดสั่งการและทรัพยากรที่ใช้โดยโค้ดนั้น" เรียกอีกอย่างว่าแอปพลิเคชัน มีโครงสร้างและรูปแบบเฉพาะที่นักพัฒนาต้องปฏิบัติตามเพื่อให้แน่ใจว่าแอปของตนทำงานอย่างถูกต้อง ทำลายข้อตกลงเหล่านั้น และคุณอาจจะทำลายแอปของคุณ หากมีบางอย่างทำงานไม่ถูกต้อง ชุดแอปพลิเคชันอาจเป็นตำแหน่งในการแก้ไขปัญหาที่เป็นประโยชน์

แอพไม่ใช่บันเดิลประเภทเดียว บันเดิลยังใช้สำหรับไฟล์ที่มีนามสกุล เช่น .framework .bundle, .plugin และ .kext บันเดิลจะแสดงเป็นออบเจ็กต์ที่รวมกันใน Finder จนกว่าคุณจะก้าวเข้าไปโดยเปิดแพ็คเกจของบันเดิล

การเปิดชุดแอปพลิเคชัน

ต่างจากไดเร็กทอรี บันเดิลแอปพลิเคชันต้องการการเต้นสั้นๆ ในการเปิด

1. คลิกขวาที่ไอคอนของแอปพลิเคชันใน “/Applications/”

2. ในเมนูบริบท คลิก "แสดงเนื้อหาแพ็คเกจ"

Macos App Bundle แสดงเนื้อหาแพ็คเกจ

3. ดับเบิลคลิกที่โฟลเดอร์ "Contents" เพื่อเข้าสู่ไดเร็กทอรีหลักของแอป

กายวิภาคของชุดแอป macOS ขั้นพื้นฐาน

ภายในโฟลเดอร์ "เนื้อหา" ของบันเดิล คุณจะพบไฟล์จำนวนหนึ่ง แอพ macOS ทั้งหมดต้องมีไฟล์ต่อไปนี้เป็นอย่างน้อย:

  • Info.plist: รวมรายละเอียดการกำหนดค่าที่จำเป็นพร้อมกับสตริงตัวระบุแอปพลิเคชัน
  • MacOS/ปฏิบัติการได้: รหัสที่ทำงานเมื่อผู้ใช้เปิดแอพที่พบในโฟลเดอร์ “MacOS” หากไม่มีไฟล์ปฏิบัติการ คุณจะไม่มีบันเดิลมากนัก
Macos App Bundle Anatomy App ใน Finder 2x

คุณมีแนวโน้มที่จะพบไฟล์เพิ่มเติมจำนวนมากในโฟลเดอร์ทั่วไปสองสามโฟลเดอร์:

  • ปลั๊กอิน: mini-executables ที่เหมือนส่วนขยายที่ขยายการทำงานของ core executable ไม่เหมือนกับทรัพยากรแบบคงที่ ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับแอปพลิเคชันแบบไดนามิก
  • ทรัพยากร: รองรับไฟล์ที่แอปพลิเคชันของคุณใช้ โฟลเดอร์นี้รวมถึงแต่ไม่จำกัดเพียง รูปภาพ ไอคอน เสียง แบบอักษร ไฟล์ปลายปากกา, การโลคัลไลเซชัน และการจัดเก็บข้อมูล ทรัพยากรเหล่านี้ไม่เหมือนกับปลั๊กอิน ทรัพยากรเหล่านี้สนับสนุนการทำงานหลักของไฟล์สั่งการ
  • กรอบงาน: เช่นเดียวกับปลั๊กอิน เฟรมเวิร์กระดับสูงที่แอปของคุณต้องการนั้นเป็นชุดรวมของมันเอง อย่างไรก็ตาม พวกเขาใช้โครงสร้างที่แตกต่างกันตามลำดับชั้น
  • รหัสลายเซ็น: ไฟล์ plist แบบมีโครงสร้างที่ใช้เพื่อจัดเตรียมลายเซ็นโค้ดสำหรับแต่ละส่วนของแอปพลิเคชัน ลายเซ็นเหล่านี้ช่วยให้แอปและ macOS ตรวจสอบความสมบูรณ์ของแอปพลิเคชันและป้องกันการโจมตีจากการจี้แอป

iOS App Bundle ใช้โครงสร้างพื้นฐานและรูปแบบไฟล์เดียวกัน แม้ว่ามักจะปรากฏในลำดับชั้นที่ต่างกัน

Info.plist

Macos App Bundle ข้อมูล Plist Xcode

Info.plist เป็นข้อมูลสรุปหลักของข้อมูลประชากรพื้นฐานของแอปพลิเคชันของคุณ ซึ่งรวมถึงตัวระบุบันเดิลของคุณ ซึ่งต้องไม่ซ้ำกับตัวระบุบันเดิลอื่นๆ ทั้งหมด เพื่อให้กระบวนการนี้ง่ายขึ้น Apple ขอแนะนำให้ใช้สัญลักษณ์โดเมนย้อนกลับ เช่น “com.apple.siri.launcher” หรือ “org.videolan.vlc” หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Info.plist โปรดดูที่ รายการคีย์ของ Apple และพิจารณาว่าแต่ละคีย์ทำอะไร

ไฟล์นี้ยังมีข้อมูลแอปพื้นฐาน เช่น ไอคอนแอป ชื่อแอป หมายเลขเวอร์ชัน ข้อมูลลิขสิทธิ์ ลิงก์สำหรับการรายงานข้อผิดพลาด และภาษาเริ่มต้น ตามแบบแผนและกฎของระบบ ตัว "I" ใน "ข้อมูล" จะเป็นตัวพิมพ์ใหญ่เสมอ

ปฏิบัติการได้

นี่คือที่ที่รหัสหลักของแอปพลิเคชันของคุณอาศัยอยู่ เมื่อเปิดแอปพลิเคชัน macOS จะเรียกใช้โค้ดที่มีอยู่ในไฟล์ปฏิบัติการที่พบในไดเร็กทอรี "MacOS" ของบันเดิล เกือบทุกแอปพลิเคชันจะมีเพียงไฟล์สั่งการเดียวเท่านั้น แม้ว่าจะสามารถใช้สองโปรแกรมขึ้นไปสำหรับไฟล์เรียกทำงานของผู้ช่วยเหลือ โดยทั่วไปแล้วไฟล์นี้ไม่น่าสนใจสำหรับทุกคนยกเว้นผู้พัฒนาซอฟต์แวร์เนื่องจากผู้ใช้ไม่สามารถดูหรือแก้ไขได้อย่างง่ายดาย

แหล่งข้อมูลและไฟล์สนับสนุนเพิ่มเติม

ทุกสิ่งที่จำเป็นต่อแอปพลิเคชันของคุณควรรวมอยู่ในชุดรวม หากไม่ใช่ส่วนหนึ่งของไฟล์เรียกทำงาน ไฟล์นั้นควรไปอยู่ในโฟลเดอร์ทรัพยากรภายในบันเดิล ทรัพยากรเหล่านี้สามารถเก็บไว้ในโฟลเดอร์ "ทรัพยากร" หลักหรือแบ่งย่อยเป็นโฟลเดอร์ต่างๆ

  • หากมีข้อสงสัย ทรัพยากรส่วนใหญ่จะอยู่ในโฟลเดอร์ "ทรัพยากร"
  • กรอบงานจะอยู่ในโฟลเดอร์ "Frameworks"
  • ปลั๊กอินจะอยู่ในโฟลเดอร์ "ปลั๊กอิน"
  • ไฟล์ Localization (ไดเร็กทอรี .lproj) จะไปที่โฟลเดอร์ Resources

นอกเหนือจากข้อกำหนดเหล่านั้น Apple ได้ให้คำแนะนำและข้อตกลงมากมายที่ควรปฏิบัติตาม เว้นแต่คุณจะมีเหตุผลที่สามารถปกป้องได้ที่จะทำอย่างอื่น

บทสรุป

แอปพลิเคชัน macOS อยู่ภายในชุดรวม ซึ่งเป็นคอนเทนเนอร์แบบลำดับชั้นสำหรับไฟล์แอปพลิเคชัน โครงสร้างพื้นฐานจะเหมือนกันทุกแอปพลิเคชัน ไฟล์ที่น่าสนใจที่สุดสำหรับผู้ใช้จะอยู่ในโฟลเดอร์ทรัพยากรภายในชุดแอป

การเปิดเผยข้อมูลพันธมิตร: ทำให้เทคโนโลยีง่ายขึ้นอาจได้รับค่าคอมมิชชั่นสำหรับผลิตภัณฑ์ที่ซื้อผ่านลิงก์ของเรา ซึ่งสนับสนุนงานที่เราทำเพื่อผู้อ่านของเรา

วิธีใช้ Emoji ใน Mac OS X Mavericks
วิธีใช้ Emoji ใน Mac OS X Mavericks

ที่ผ่านมาเราได้แสดงให้คุณเห็นถึงวิธีการ ใช้อักขระ Emoji บน Mac ของคุณ โดยไม่ต้องติดตั้งซอฟต์แวร์ใ...

วิธีกำหนดเวลา Mac ของคุณเพื่อเริ่มต้นหรือปิดเครื่องในเวลาที่กำหนด
วิธีกำหนดเวลา Mac ของคุณเพื่อเริ่มต้นหรือปิดเครื่องในเวลาที่กำหนด

คุณลักษณะหนึ่งที่ฉันชอบเกี่ยวกับ Mac ของฉัน แต่ไม่ค่อยมีโอกาสได้ใช้งานคือคุณลักษณะการตั้งเวลา คุณ...

ปิดใช้งานการแสดงตัวอย่างไฟล์แนบในเมล [Mac]
ปิดใช้งานการแสดงตัวอย่างไฟล์แนบในเมล [Mac]

หากคุณใช้แอพเมลเป็นไคลเอนต์อีเมลเริ่มต้นใน Mac OS X คุณอาจต้องการปิดการแสดงตัวอย่างไฟล์แนบเป็นครั...