- 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.