Logo
RSS Feed

iOS IPA


Created: 18.09.2020

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 storyboards
  • en.lproj - for English strings
  • de.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 and Caches 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.