When installed on the device, *.ipa is unzipped into a corresponding folder. That’s the contents:
PayloadPayload/Application.appiTunesArtworkiTunesMetadata.plistWatchKitSupport/WK
The *.ipa’s Payload is made of:
MyAppApplicationInfo.plistLaunch imagesMainWindow.nibSettings.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 SupportandCachessubdirectories, 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
NSUserDefaultscan 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.
