Jump to content

.ipa: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Tgho (talk | contribs)
Added citations for bundle architecture and contents
 
(72 intermediate revisions by 47 users not shown)
Line 1: Line 1:
{{Short description|File format used for software on Apple's iOS operating system}}
{{unreferenced|date=August 2011}}
{{Infobox file format
| name = IPA
| icon =
| _noextcode = on
| mime =
| extension = {{code|.ipa}}
| type code =
| uniform type =
| owner = [[Apple, Inc]]
| genre = [[Package format]]
| container for = [[Mobile app]]s
| contained by =
| extended from = [[Zip (file format)|zip]], [[JAR (file format)|JAR]]
| extended to =
| standard =
| url =
}}


An '''.ipa''' ('''i'''OS '''A'''pp Store '''P'''ackage) file is an [[iOS]] application archive file which stores an iOS [[Mobile application software|app]]. Each .ipa file includes a binary for the [[ARM architecture]] and can only be installed on an [[iOS]] device. Files with the .ipa extension can be uncompressed by changing the extension to [[ZIP (file format)|.zip]] and unzipping.
A '''.ipa''' file is an [[iOS]] and [[iPadOS]] application [[Zip (file format)|zip]] archive file which stores an iOS/iPadOS [[Mobile application software|app]] in a [[bundle (macOS)|bundle]] format. Each .ipa file includes a binary and can only be installed on an [[iOS]], [[iPadOS]], or ARM-based [[macOS]] device. Files with the .ipa extension can be uncompressed by changing the extension to [[ZIP (file format)|.zip]] and unzipping. This is only recommended when editing the app itself. Some ipa's will not have a .app file.
Most .ipa files cannot be installed on the [[iPhone Simulator]] because they do not contain a binary for the [[x86]] architecture<ref>{{cite web|url=https://reincubate.com/support/dmge/open-ipa-file-on-windows/|title=How to open an IPA file on Windows|publisher=Reincubate|accessdate=2019-04-08}}</ref>. To run applications on the simulator, original project files which can be opened using the [[Xcode]] [[Software development kit|SDK]] are required. However, some .ipa files can be opened on the simulator by extracting and copying over the .app file found in the Payload folder. Some simple apps are able to run on the simulator through this method.


Most .ipa files cannot be installed on the [[iPhone Simulator]] because they do not contain a binary for the [[x86]] architecture, only one for the [[ARM architecture]] of mobile phones and tablets.<ref>{{cite web|url=https://reincubate.com/support/dmge/open-ipa-file-on-windows/|title=How to open an IPA file on Windows|publisher=Reincubate|accessdate=2019-04-08}}</ref> To run applications on the simulator, original project files which can be opened using the [[Xcode]] [[Software development kit|SDK]] are required. However, some .ipa files can be opened on the simulator by extracting and copying over the .app file found in the Payload folder. Some simple apps are able to run on the simulator through this method.
== Unsigned .ipa executables ==


ipa is a ''de facto'' format used by Apple and there are no specifications of it. A form of [[digital rights management]] exists in the format to control redistribution to a single Apple ID.<ref>{{cite web |title=itunes – How does iOS app DRM work, exactly? |url=https://apple.stackexchange.com/a/48236 |website=Ask Different |date=2012}}</ref> Prior to iTunes 12.7 (September 2017), users had direct access to ipa files in the form of App Store downloads.<ref>{{Citation |last=Clover |first=Juli |title=Apple Releases iTunes 12.7 With Major Changes, Including No Built-In App Store |date=2017-09-12 |url=https://www.macrumors.com/2017/09/12/apple-itunes-12-7-no-app-store/ |access-date=2024-03-08 |publisher=[[MacRumors]] |language=en}}</ref>
An unsigned .ipa can be created by copying the folder with the extension [[Bundle (OS X)|.app]] from the Products folder of the application in Xcode to a folder called [[Payload (computing)|Payload]] and compressing the latter using the command

<code>zip -0 -y -r myAppName.ipa Payload/</code>

It is then possible to install unsigned .ipa files on [[iOS jailbreaking|iOS jailbroken]] devices using third party software; unsigned .ipa files are often used for piracy{{weasel-inline|date=June 2017}}.


==Structure of a .ipa file==
==Structure of a .ipa file==


An IPA has a built-in structure for [[iTunes]] and [[App Store (iOS)|App Store]] to recognize.
An IPA has a built-in structure for [[iTunes]] and [[App Store (iOS)|App Store]] to recognize.
The example below shows the structure of an IPA<ref>{{cite web|url=https://www.owasp.org/images/b/b9/OWASP_Mobile_App_Hacking_%28AppSecUSA_2014%29_Workshop_Content.pdf|title=Reverse Engineering iOS Applications|publisher=ARXAN|accessdate=2019-04-08}}</ref>:
The example below shows the structure of an IPA:<ref>{{cite web|url=https://www.owasp.org/images/b/b9/OWASP_Mobile_App_Hacking_%28AppSecUSA_2014%29_Workshop_Content.pdf|title=Reverse Engineering iOS Applications|publisher=ARXAN|accessdate=2019-04-08|date=2014|archive-date=2017-12-22|archive-url=https://web.archive.org/web/20171222000837/https://www.owasp.org/images/b/b9/OWASP_Mobile_App_Hacking_%28AppSecUSA_2014%29_Workshop_Content.pdf|url-status=dead}}</ref>


<pre>
<pre>
/Payload/
/Payload/
/Payload/Application.app
/Payload/Application.app/
/iTunesArtwork
/iTunesArtwork
/iTunesArtwork@2x
/iTunesArtwork@2x
/iTunesMetadata.plist
/iTunesMetadata.plist
/WatchKitSupport/WK
/WatchKitSupport/WK
/META-INF
</pre>
</pre>


As shown above, the [[Payload (computing)|Payload]] folder is what contains all the app data. The iTunes Artwork file is a 512×512 pixel [[Portable Network Graphics|PNG]] image, containing the app's icon for showing in [[iTunes]] and the App Store app on the [[iPad]]. The iTunesMetadata.plist contains various bits of information, ranging from the developer's name and ID, the bundle identifier, copyright information, genre, the name of the app, release date, purchase date, etc.
As shown above, the [[Payload (computing)|Payload]] folder is what contains all the app data. The iTunes Artwork file is a 512×512 pixel [[Portable Network Graphics|PNG]] image, containing the app's icon for showing in [[iTunes]] and the App Store app on the [[iPad]]. The iTunesMetadata.plist contains various bits of information, ranging from the developer's name and ID, the bundle identifier, copyright information, genre, the name of the app, release date, purchase date, etc.


It is common but undocumented to use a JPEG file for {{tt|iTunesArtwork}}.{{cn|date=November 2023}}

Since 2017, Apple has used [[LZFSE]] instead of registered Zip algorithms in IPAs. The "compression method" field in this case is set to 99.<ref>{{cite web |title=unzip with lzfse support |url=https://sskaje.me/2017/08/unzip-with-lzfse-support/ |website=sskaje |date=23 August 2017 |access-date=21 March 2023 |archive-date=29 July 2021 |archive-url=https://web.archive.org/web/20210729084720/https://sskaje.me/2017/08/unzip-with-lzfse-support/ |url-status=dead }}</ref>

Code signing is handled in the .app bundle directory. The META-INF folder only contains metadata about what program was used to create the IPA.<ref>{{cite web |title=Pulling apart an iOS App |url=https://blog.razb.me/pulling-apart-an-ios-app/ |website=Raz |date=29 December 2017 |access-date=4 March 2020 |archive-date=14 July 2020 |archive-url=https://web.archive.org/web/20200714200020/https://blog.razb.me/pulling-apart-an-ios-app/ |url-status=dead }}</ref>

== Unsigned .ipa executables ==

An unsigned .ipa can be created by copying the folder with the extension [[Bundle (macOS)|.app]] from the Products folder of the application in Xcode to a folder called [[Payload (computing)|Payload]] and compressing the latter using the command <code>zip -0 -y -r myAppName.ipa Payload/</code>.

It is then possible to install unsigned .ipa files on [[iOS jailbreaking|iOS jailbroken]] devices using third party software. ''AppSync'' is the tool for installing such homebrew apps. [[AltStore]] and [[Sideloadly]] are tools that can also be used to install unsigned .ipa files to unjailbroken devices by using a developer account to temporarily sign the app for 7 days for testing purposes. Similar to the case of game console hacking, people are known to use this installation for [[Online piracy|piracy]], against the tool developer's wishes:<ref>{{cite web |title=AppSync Unified :: Karen's Repo |url=https://cydia.akemi.ai/?page/net.angelxwind.appsyncunified |website=cydia.akemi.ai}}</ref> some underground communities form around buying an app and then sharing its DRM-free unsigned version.

==See also==
* [[apk (file format)]]
* [https://instandrrapk.com/ instander Apk] (file format)

==References==
{{Reflist}}

{{Archive formats}}
{{DEFAULTSORT:Ipa}}
{{DEFAULTSORT:Ipa}}
[[Category:Archive formats]]
[[Category:Archive formats]]

Latest revision as of 13:46, 7 December 2024

IPA
Filename extension.ipa
Developed byApple, Inc
Type of formatPackage format
Container forMobile apps
Extended fromzip, JAR

A .ipa file is an iOS and iPadOS application zip archive file which stores an iOS/iPadOS app in a bundle format. Each .ipa file includes a binary and can only be installed on an iOS, iPadOS, or ARM-based macOS device. Files with the .ipa extension can be uncompressed by changing the extension to .zip and unzipping. This is only recommended when editing the app itself. Some ipa's will not have a .app file.

Most .ipa files cannot be installed on the iPhone Simulator because they do not contain a binary for the x86 architecture, only one for the ARM architecture of mobile phones and tablets.[1] To run applications on the simulator, original project files which can be opened using the Xcode SDK are required. However, some .ipa files can be opened on the simulator by extracting and copying over the .app file found in the Payload folder. Some simple apps are able to run on the simulator through this method.

ipa is a de facto format used by Apple and there are no specifications of it. A form of digital rights management exists in the format to control redistribution to a single Apple ID.[2] Prior to iTunes 12.7 (September 2017), users had direct access to ipa files in the form of App Store downloads.[3]

Structure of a .ipa file

[edit]

An IPA has a built-in structure for iTunes and App Store to recognize. The example below shows the structure of an IPA:[4]

/Payload/
/Payload/Application.app/
/iTunesArtwork
/iTunesArtwork@2x
/iTunesMetadata.plist
/WatchKitSupport/WK
/META-INF

As shown above, the Payload folder is what contains all the app data. The iTunes Artwork file is a 512×512 pixel PNG image, containing the app's icon for showing in iTunes and the App Store app on the iPad. The iTunesMetadata.plist contains various bits of information, ranging from the developer's name and ID, the bundle identifier, copyright information, genre, the name of the app, release date, purchase date, etc.

It is common but undocumented to use a JPEG file for iTunesArtwork.[citation needed]

Since 2017, Apple has used LZFSE instead of registered Zip algorithms in IPAs. The "compression method" field in this case is set to 99.[5]

Code signing is handled in the .app bundle directory. The META-INF folder only contains metadata about what program was used to create the IPA.[6]

Unsigned .ipa executables

[edit]

An unsigned .ipa can be created by copying the folder with the extension .app from the Products folder of the application in Xcode to a folder called Payload and compressing the latter using the command zip -0 -y -r myAppName.ipa Payload/.

It is then possible to install unsigned .ipa files on iOS jailbroken devices using third party software. AppSync is the tool for installing such homebrew apps. AltStore and Sideloadly are tools that can also be used to install unsigned .ipa files to unjailbroken devices by using a developer account to temporarily sign the app for 7 days for testing purposes. Similar to the case of game console hacking, people are known to use this installation for piracy, against the tool developer's wishes:[7] some underground communities form around buying an app and then sharing its DRM-free unsigned version.

See also

[edit]

References

[edit]
  1. ^ "How to open an IPA file on Windows". Reincubate. Retrieved 2019-04-08.
  2. ^ "itunes – How does iOS app DRM work, exactly?". Ask Different. 2012.
  3. ^ Clover, Juli (2017-09-12), Apple Releases iTunes 12.7 With Major Changes, Including No Built-In App Store, MacRumors, retrieved 2024-03-08
  4. ^ "Reverse Engineering iOS Applications" (PDF). ARXAN. 2014. Archived from the original (PDF) on 2017-12-22. Retrieved 2019-04-08.
  5. ^ "unzip with lzfse support". sskaje. 23 August 2017. Archived from the original on 29 July 2021. Retrieved 21 March 2023.
  6. ^ "Pulling apart an iOS App". Raz. 29 December 2017. Archived from the original on 14 July 2020. Retrieved 4 March 2020.
  7. ^ "AppSync Unified :: Karen's Repo". cydia.akemi.ai.