Computer >> คอมพิวเตอร์ >  >> ระบบ >> MAC

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

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

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

macOS App Bundle คืออะไร

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

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

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

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

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

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

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

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

กายวิภาคของ macOS App Bundle ขั้นพื้นฐาน

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

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

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

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

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

Info.plist

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

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

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

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

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

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

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

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

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

บทสรุป

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