10 puan yazan GN⁺ 2025-12-09 | Henüz yorum yok. | WhatsApp'ta paylaş
  • macOS uygulamaları, komut satırı programlarından daha karmaşık bileşenlere sahiptir ve pencere ile menü gibi arayüz kaynaklarını ayrı bir yapıda yönetir
  • Classic Mac OS'ta çalıştırılabilir kod ve kaynaklar dosyanın resource fork bölümünde saklanıyordu, ancak Mac OS X ile birlikte bundle yapısına geçildi
  • Uygulama bundle'ı, Contents dizini etrafında; MacOS, Resources, Frameworks gibi alt klasörler ve Info.plist gibi temel dosyalardan oluşur
  • Daha sonra kod imzalama, App Store makbuzu, notarization gibi unsurlar eklendi ve yapı güvenlik ile bütünlüğü güçlendirecek şekilde gelişti
  • Bu kendine yeterli app bundle yapısı, kurulum, güncelleme ve kaldırmayı basitleştirirken güvenlik ve bakım verimliliğini artıran temel bir zemin haline geldi

Classic Mac OS'ta uygulama yapısı

  • İlk Mac OS sürümlerinde pencere, menü gibi UI kaynakları, çalıştırılabilir dosyadan ayrılarak resource fork içinde saklanıyordu
    • Örnek olarak QuarkXPress 4.11 kaynakları ResEdit içinde görüntülenebiliyordu
    • Çalıştırma kodu CODE resource içinde yer alıyor, Finder'ın tanıyabilmesi için dosya türü (type) ve creator bilgileri de birlikte saklanıyordu

Mac OS X'in bundle yapısı

  • Mac OS X, NeXTSTEP kökenli bundle yapısını benimsedi
    • Uygulama, .app uzantılı bir dizin biçimindedir ve içinde Contents klasörü bulunur
    • MacOS klasörü, GUI uygulamasının çalıştırılabilir dosyasını ve komut satırı araçlarını içerir
    • Resources klasörü, uygulama simgesi, GUI bileşenleri ve benzeri kaynak dosyaları saklar
    • Bazı uygulamalar, Frameworks klasörü içinde dylib (dinamik kütüphane) gömülü olarak gelir
  • Info.plist dosyası zorunludur; çalıştırılabilir dosya adını, simgeyi, minimum macOS sürümünü, belge türlerini ve sürüm numaralarını tanımlar
  • PkgInfo dosyası, Classic Mac OS'taki type/creator bilgisini korur ancak zorunlu değildir
  • Uygulama çalıştırıldığında launchd yürütme kodunu başlatır; LaunchServices ve RunningBoard ise Info.plist bilgisine dayanarak başlatma sürecini yürütür

macOS'ta güvenlik ve genişleme

  • Mac OS X 10.5 Leopard (2007) ile birlikte Code Signature kullanıma girdi ve _CodeSignature klasörü eklendi
    • CodeResources dosyası, uygulama bütünlüğünü doğrulamak için kod dizini hash'ini (CDHash) içerir
  • App Store üzerinden dağıtılan uygulamalar, _MASReceipt klasöründe mağaza makbuzunu içerir
  • 2018'den sonra notarization devreye girdi; Apple tarafından verilen ticket, CodeResources dosyası üzerinden bundle'a staple edilebilir
  • Modern uygulama bundle'ları, geçmişte sistem klasörlerine kurulan bileşenleri artık kendi içinde taşır
    • Library klasörü: LaunchDaemons, LoginItems vb.
    • XPCServices klasörü: uygulamanın kullandığı ayrı yürütme servisleri
    • Plugins / Extensions klasörü: uygulama genişletmeleri ve App Intents içerir
    • Bazı uygulamalarda ayrıca version.plist dosyası da bulunur

Uygulama bundle'ının avantajları

  • Tüm bileşenlerin bundle içinde birleştirilmesi, kurulum, güncelleme ve kaldırmayı kolaylaştırır
  • Bileşen eksikliği olasılığı azalır; imzalama ve notarization koruması sayesinde güvenlik güçlenir
  • App Store uygulamaları, ek olarak makbuz ve notarization ticket içererek güvenilirlik sağlar
  • Intel ve Arm mimarileri arasında yapısal fark yoktur; Mach-O çalıştırılabilir dosyası, her iki platformun kodunu birlikte içeren universal (fat) binary biçiminde saklanır
    • Aynı dosya içinde her mimariye ait signature da birlikte bulunur

Uygulama yapısının görsel özeti

  • Diyagramda açık sarı, zorunlu ya da neredeyse tüm uygulamalarda bulunan bileşenleri gösterir
  • Yeşil, yalnızca App Store dağıtımlı uygulamalarda bulunan öğeleri; mavi ise isteğe bağlı notarization ticket'ını ifade eder
  • Ek olarak Automator workflow'ları, script'ler gibi yardımcı unsurlar da yer alabilir
  • Genel olarak macOS uygulamaları, kendine yeterli ve güvenlik odaklı bir yapıya doğru evrilmiştir

Henüz yorum yok.

Henüz yorum yok.