iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
macOSとiOSの実行可能コードをパッケージ化する方法にバンドル構造というのがある。内容を簡単に説明すると実行可能コードとリソースをディレクトリは以下に配置し、そのディレクトリをパッケージ化された塊として扱うもので、アプリケーションはApplication Bundle、フレームワークはFramework Bundleと呼ばれる決められた構成となっている。
MyApp.app
|-- MyApp
|-- MyAppIcon.png
|-- MySearchIcon.png
|-- Info.plist
|-- Default.png
|-- MainWindow.nib
|-- Settings.bundle
|-- MySettingsIcon.png
|-- iTunesArtwork
|-- en.lproj
| `-- MyImage.png
`-- fr.lproj
`-- MyImage.png
MyFramework.framework
|-- MyFramework -> Versions/Current/MyFramework
|-- Resources -> Versions/Current/Resources
`-- Versions
|-- A
| |-- MyFramework
| |-- Headers
| | `-- MyHeader.h
| `-- Resources
| |-- English.lproj
| | `-- InfoPlist.strings
| `-- Info.plist
`-- Current -> A
Loadable Bundleは動的にロード可能なパッケージで、.bundle や .plugin 等が suffix として使われている。
MyLoadableBundle.bundle
`-- Contents
|-- Info.plist
|-- MacOS
| `-- MyLoadableBundle
`-- Resources
|-- Lizard.jpg
|-- MyLoadableBundle.icns
|-- en.lproj
| |-- MyLoadableBundle.nib
| `-- InfoPlist.strings
`-- jp.lproj
|-- MyLoadableBundle.nib
`-- InfoPlist.strings