Hasty Briefsbeta

双语

The Anatomy of a macOS App

5 months ago
  • #macOS
  • #Software Development
  • #App Bundles
  • Mac OS引入资源分支(resource forks)技术,将应用程序资源与可执行代码分开存储
  • Mac OS X沿用了NeXTSTEP的bundle结构,采用Contents/MacOS/Resources等目录组织应用程序
  • 应用程序包中的关键文件包括Info.plist和PkgInfo,其中Info.plist用于声明应用核心信息
  • 应用启动依赖LaunchServices和RunningBoard机制,这些机制都需要读取Info.plist文件
  • Mac OS X 10.5 Leopard引入代码签名机制,新增_CodeSignature目录进行完整性校验
  • 通过App Store分发的应用包含_MASReceipt目录存放商店收据
  • 2018年引入的公证(Notarization)机制允许将电子票据'钉入'应用包
  • 应用程序包可能还包含Library/XPCServices/Plugins/Extensions等扩展目录
  • bundle结构集中管理组件,显著提升安装/更新/卸载效率和安全性
  • Intel与Arm架构应用没有结构差异,都采用包含多架构代码的'胖二进制'文件