10 poin oleh GN⁺ 2025-12-09 | Belum ada komentar. | Bagikan ke WhatsApp
  • Aplikasi macOS memiliki komponen yang lebih kompleks daripada program baris perintah, dan mengelola sumber daya antarmuka seperti jendela dan menu dalam struktur terpisah
  • Pada Classic Mac OS, kode eksekusi dan sumber daya disimpan di resource fork file, tetapi sejak Mac OS X beralih ke struktur bundle
  • Bundle aplikasi berpusat pada direktori Contents, dan terdiri dari subfolder seperti MacOS·Resources·Frameworks serta file inti seperti Info.plist
  • Setelah itu, elemen seperti code signing, tanda terima App Store, dan notarization ditambahkan, sehingga strukturnya berkembang untuk memperkuat keamanan dan integritas
  • Struktur mandiri (app bundle) ini menjadi fondasi utama yang menyederhanakan instalasi, pembaruan, dan penghapusan, sekaligus meningkatkan keamanan dan efisiensi pemeliharaan

Struktur aplikasi di Classic Mac OS

  • Pada Mac OS awal, resource UI seperti jendela dan menu dipisahkan dari file eksekusi dan disimpan di resource fork
    • Sebagai contoh, resource milik QuarkXPress 4.11 ditampilkan di ResEdit
    • Kode eksekusi disertakan dalam resource CODE, dan informasi type serta creator file juga disimpan agar dapat dikenali oleh Finder

Struktur bundle di Mac OS X

  • Mac OS X memperkenalkan struktur bundle yang berasal dari NeXTSTEP
    • Aplikasi berbentuk direktori dengan ekstensi .app, dan di dalamnya terdapat folder Contents
    • Folder MacOS berisi file eksekusi aplikasi GUI dan alat baris perintah
    • Folder Resources menyimpan file resource seperti ikon aplikasi dan komponen GUI
    • Sebagian aplikasi menyertakan folder Frameworks untuk menanamkan dylib (dynamic library)
  • File Info.plist bersifat wajib, dan mendefinisikan nama file eksekusi, ikon, versi minimum macOS, jenis dokumen, nomor versi, dan lain-lain
  • File PkgInfo mempertahankan informasi type/creator dari Classic Mac OS, tetapi tidak wajib
  • Saat aplikasi dijalankan, launchd memulai kode eksekusi, sementara LaunchServices dan RunningBoard menjalankan prosedur inisialisasi berdasarkan informasi di Info.plist

Keamanan dan perluasan di macOS

  • Sejak Mac OS X 10.5 Leopard (2007), code signing diperkenalkan dan folder _CodeSignature ditambahkan
    • File CodeResources memuat hash direktori kode (CDHash) untuk memverifikasi integritas aplikasi
  • Aplikasi yang didistribusikan lewat App Store menyertakan tanda terima toko di folder _MASReceipt
  • Sejak 2018, notarization diperkenalkan, sehingga ticket yang diterbitkan Apple dapat di-staple ke bundle melalui file CodeResources
  • Bundle aplikasi modern menyertakan sendiri komponen yang dahulu diinstal di folder sistem
    • Folder Library: LaunchDaemons, LoginItems, dan lain-lain
    • Folder XPCServices: layanan eksekusi terpisah yang digunakan aplikasi
    • Folder Plugins / Extensions: mencakup fitur ekstensi aplikasi dan App Intents
    • Sebagian aplikasi juga memiliki file version.plist

Keunggulan bundle aplikasi

  • Dengan mengintegrasikan semua komponen ke dalam bundle, instalasi, pembaruan, dan penghapusan menjadi lebih mudah
  • Kemungkinan ada komponen yang hilang berkurang, dan keamanan diperkuat melalui perlindungan tanda tangan dan notarization
  • Aplikasi App Store juga menyertakan tanda terima dan ticket notarization untuk memastikan keandalan
  • Tidak ada perbedaan struktur antara arsitektur Intel dan Arm; file eksekusi Mach-O disimpan dalam bentuk binary universal (fat) yang memuat kode untuk kedua platform
    • Di dalam file yang sama juga terdapat signature untuk masing-masing arsitektur

Gambaran visual struktur aplikasi

  • Dalam diagram, kuning pucat menunjukkan komponen yang wajib atau ada di hampir semua aplikasi
  • Hijau menunjukkan item yang hanya ada pada aplikasi yang didistribusikan melalui App Store, sedangkan biru berarti ticket notarization opsional
  • Selain itu, elemen tambahan seperti workflow Automator dan skrip dapat disertakan
  • Secara keseluruhan, aplikasi macOS telah berevolusi menuju struktur mandiri yang berfokus pada keamanan

Belum ada komentar.

Belum ada komentar.