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架构应用没有结构差异,都采用包含多架构代码的'胖二进制'文件