When installed on the device, *.ipa
is unzipped into a corresponding folder. That’s the contents:
Payload
Payload/Application.app
iTunesArtwork
iTunesMetadata.plist
WatchKitSupport/WK
The *.ipa
’s Payload is made of:
MyApp
Application
Info.plist
Launch images
MainWindow.nib
Settings.bundle
- Custom resource files
Project folder language.lproj
:
Base.lproj
- for storyboardsen.lproj
- for English stringsde.proj
- for German strings
To read.
Info.plist
contains configuration information for the application, such as its bundle ID, version number, and display name.
_CodeSignature/
contains a plist file with a signature over all files in the bundle.
Frameworks/
contains the app native libraries as .dylib or .framework files.
PlugIns/
may contain app extensions as .appex files (not present in the example).
iGoat-Swift
is the app binary containing the app’s code. Its name is the same as the bundle’s name minus the .app extension.
Various resources such as images/icons, *.nib
files (storing the user interfaces of iOS app), localized content (<language>.lproj
), text files, audio files, etc.
Data directory:
- Documents/
- Contains all the user-generated data. The application end user initiates the creation of this data.
- Visible to users and users can write to it.
- Content in this directory is backed up.
- The app can disable paths by setting
NSURLIsExcludedFromBackupKey
.
- Library/
- Contains all files that aren’t user-specific, such as caches, preferences, cookies, and property list (plist) configuration files.
- iOS apps usually use the
Application Support
andCaches
subdirectories, but the app can create custom subdirectories.
- Library/Caches/
- Contains semi-persistent cached files.
- Invisible to users and users can’t write to it.
- Content in this directory is not backed up.
- The OS may delete this directory’s files automatically when the app is not running and storage space is running low.
- Library/Application Support/
- Contains persistent files necessary for running the app.
- Invisible to users and users can’t write to it.
- Content in this directory is backed up.
- The app can disable paths by setting
NSURLIsExcludedFromBackupKey
.
- Library/Preferences/
- Used for storing properties that can persist even after an application is restarted.
- Information is saved, unencrypted, inside the application sandbox in a plist file called [BUNDLE_ID].plist.
- All the key/value pairs stored using
NSUserDefaults
can be found in this file.
- tmp/
- Use this directory to write temporary files that do not need to persist between app launches.
- Contains non-persistent cached files.
- Invisible to users.
- Content in this directory is not backed up.
- The OS may delete this directory’s files automatically when the app is not running and storage space is running low.
Bundle directory:
- AppName.app
- This is the Application Bundle as seen before in the IPA, it contains essential application data, static content as well as the application’s compiled binary.
- This directory is visible to users, but users can’t write to it.
- Content in this directory is not backed up.
- The contents of this folder are used to validate the code signature.