IPA (iOS App Store Package) è un formato di file di archivio per distribuire applicazioni su iOS. Ogni applicazione che arriva sull'App Store passa attraverso il formato IPA: lo sviluppatore compila il progetto, lo firma e carica l'IPA in App Store Connect. Secondo Apple Developer Documentation, 2026, il formato IPA si basa su ZIP e contiene un file Mach-O eseguibile, risorse e metadati di firma.
Punti chiave
IPA (iOS App Store Package) è un formato di pacchetto per distribuire applicazioni sulla piattaforma Apple. Come APK, IPA è tecnicamente un archivio ZIP, ma con una propria struttura dettata dai requisiti di sicurezza e firma di iOS.
Il formato IPA è apparso insieme a iPhone OS 2.0 nel 2008 e all'App Store. Era basato sul formato di pacchetto .app di macOS, impacchettato in ZIP per ridurre le dimensioni durante la trasmissione. Da allora, la struttura dell'IPA non ha subito cambiamenti radicali — solo gli schemi di firma e i metadati si sono evoluti.
App Store — il canale principale. Distribuzione Ad-hoc — per test su un numero limitato di dispositivi (fino a 100). Distribuzione Enterprise — per applicazioni aziendali senza pubblicazione nello store. Gli sviluppatori usano anche IPA per test su dispositivi reali tramite Xcode.
La struttura interna di un IPA è un archivio ZIP contenente una cartella Payload con il bundle .app e metadati.
| File/Directory | Scopo |
|---|---|
| Payload/ | Cartella radice con il bundle .app |
| Payload/App.app/ | Bundle dell'applicazione: file eseguibile, risorse, nib/storyboard |
| Payload/App.app/Info.plist | Metadati: bundle ID, versioni, permessi |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile per l'installazione |
| iTunesMetadata.plist | Metadati iTunes (opzionale) |
| META-INF/ | Firme e hash per la verifica |
All'interno della cartella Payload si trova il bundle dell'applicazione con estensione .app. Questo non è un file ma una directory che iOS riconosce come applicazione. All'interno: il file eseguibile Mach-O (il nome corrisponde al nome del bundle), Info.plist, risorse, immagini e stringhe localizzate.
Il codice sorgente in Swift o Objective-C viene compilato in codice macchina nel formato Mach-O (Mach Object). Il file contiene i segmenti __TEXT (codice), __DATA (dati) e __LINKEDIT (metadati di collegamento). Gli IPA moderni contengono solo l'architettura arm64 a 64 bit.
Xcode automatizza la compilazione dell'IPA: dalla compilazione del codice sorgente alla creazione di un archivio firmato pronto per il caricamento in App Store Connect.
Debug — per lo sviluppo, senza ottimizzazioni. Release — per la pubblicazione, con ottimizzazioni del compilatore. Ogni schema definisce flag di compilazione, code signing e entitlements. Xcode crea un Archivio (Archive) tramite Product → Archive.
// Info.plist — metadati di base dell'applicazione
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
Xcode compila ogni file .swift o .m in un file oggetto (.o), poi li collega in un unico binario Mach-O. Le risorse (immagini, XIB, storyboard) vengono elaborate separatamente: gli storyboard vengono compilati nel formato binario .storyboardc, le immagini vengono ottimizzate in Asset Catalog (.car).
Firma è l'aspetto più complesso di un IPA. Apple richiede una firma digitale per qualsiasi applicazione eseguita su un dispositivo reale. Il sistema verifica il certificato dello sviluppatore, gli entitlements e la conformità del Provisioning Profile.
Certificate (Development o Distribution) — certifica l'identità dello sviluppatore. Provisioning Profile — collega il certificato, il bundle ID e l'elenco dei dispositivi consentiti (per ad-hoc). Entitlements — permessi dell'applicazione (notifiche push, iCloud, App Groups).
Xcode firma ogni libreria e framework all'interno del bundle .app, poi firma il bundle stesso. L'IPA finale viene firmato a livello di archivio ZIP. Apple verifica tutti i livelli di firma durante l'installazione. iOS non avvia l'applicazione se almeno un componente ha una firma non valida.
// Verifica della firma tramite Security framework
import Security
func checkSignature() -> Bool {
let url = Bundle.main.bundleURL
var staticCode: SecStaticCode?
guard SecStaticCodeCreateWithPath(
url as CFURL,
[], &staticCode
) == errSecSuccess else {
return false
}
return true
}
App Store Connect è la piattaforma di Apple per gestire la pubblicazione delle applicazioni. Il caricamento dell'IPA viene effettuato tramite Xcode Organizer, Transporter o la riga di comando con xcrun altool.
Dopo aver creato un archivio, Xcode offre Distribute App con una scelta di metodo: App Store Connect, Ad-hoc, Enterprise o Development. Selezionando App Store Connect, lo sviluppatore specifica il team e conferma il caricamento. Xcode verifica la firma, invia l'IPA ai server Apple e restituisce lo stato di elaborazione.
Per CI/CD si utilizza xcrun altool o il più recente notarytool. Apple richiede la notarizzazione per le applicazioni macOS; per iOS questo passaggio è opzionale ma raccomandato. xcodebuild -exportArchive crea un IPA firmato pronto per il caricamento.
Apple controlla ogni IPA per codice dannoso, API private e conformità alle App Store Review Guidelines. Il processo di revisione richiede da 1 ora a 2 giorni.
Quando si carica un IPA in App Store Connect, Apple applica App Thinning — una tecnologia che ottimizza il binario per dispositivi specifici. Slicing rimuove le risorse per risoluzioni e architetture non supportate. On-Demand Resources permette di caricare parti dell'applicazione (livelli di gioco, video) solo su richiesta dell'utente. Bitcode è una rappresentazione intermedia che Apple può ricompilare per nuove architetture senza il coinvolgimento dello sviluppatore.
App Store verifica anche la conformità dell'IPA ai requisiti Sandbox: l'applicazione non deve accedere ai dati di altre applicazioni, al file system al di fuori del suo contenitore o alle funzionalità hardware senza l'esplicita autorizzazione dell'utente.
TestFlight è il servizio ufficiale di Apple per il beta testing delle applicazioni. Lo sviluppatore carica l'IPA in App Store Connect e invita i tester via email o tramite un link pubblico.
Internal Testing — fino a 100 membri del team dello sviluppatore. Non richiede revisione Apple. External Testing — fino a 10.000 tester, richiede il superamento del Beta App Review. TestFlight distribuisce automaticamente i build ai tester e raccoglie analisi.
Un build è disponibile per i test per 90 giorni dopo il caricamento. TestFlight supporta fino a 100 build attivi contemporaneamente. Ogni tester può installare fino a 30 applicazioni alla volta. Crashlytics si integra con TestFlight per raccogliere rapporti di crash ed errori non fatali.
La compilazione di IPA in un ambiente CI richiede un runner macOS. GitHub Actions, GitLab CI e Bitrise forniscono ambienti macOS per build iOS. La lane `build_app` di Fastlane automatizza l'intero ciclo: archiviazione, firma, esportazione IPA e caricamento su TestFlight. Per la gestione di certificati e profili si utilizza Match — uno strumento Fastlane che memorizza le firme in un repository Git crittografato.
Gli sviluppatori incontrano diversi errori caratteristici durante la compilazione e la firma dell'IPA. La maggior parte sono legati a una configurazione errata di certificati e profili.
Xcode non trova un Provisioning Profile corrispondente al bundle ID e al certificato. Soluzione — scaricare i profili correnti in Xcode Accounts → Download Manual Profiles o utilizzare Automatic Signing.
Questo errore si verifica durante il caricamento di un IPA con un'architettura non valida. Gli IPA moderni devono contenere solo arm64. La presenza di i386 o x86_64 nel binario causa il rifiuto. Soluzione — verificare le architetture in Build Settings ed escludere le architetture del simulatore.
L'IPA non contiene la struttura corretta Payload/App.app. Apple si aspetta una gerarchia precisa. Soluzione — verificare che l'archivio includa una cartella Payload con un bundle .app, non un elenco piatto di file.
Per la distribuzione aziendale si utilizza il programma Enterprise di Apple ($299/anno). L'IPA viene firmato con un certificato Enterprise e può essere installato su qualsiasi dispositivo dell'azienda senza limite di quantità. La distribuzione Ad-hoc è limitata a 100 dispositivi per account sviluppatore ($99/anno). I sistemi MDM (Mobile Device Management) come Jamf e Microsoft Intune supportano l'installazione di massa di IPA Enterprise.
Domande frequenti
IPA utilizza il formato eseguibile Mach-O invece di DEX, richiede un Provisioning Profile per l'installazione e supera una revisione rigorosa dell'App Store. APK, a differenza di IPA, può essere installato direttamente senza intermediari (sideloading).
No, la compilazione di IPA richiede Xcode e gli strumenti Apple, che sono disponibili solo su macOS. Alternative: server macOS remoti (Mac mini, AWS Mac) o servizi CI cloud (GitHub Actions con runner macOS).
Un'applicazione semplice — 5–30 MB. Un'applicazione di media complessità — 30–150 MB. I giochi possono raggiungere 4 GB. Apple limita la dimensione del download via rete cellulare a 200 MB, ma l'utente può scaricare tramite Wi-Fi.
Per l'installazione ad-hoc si utilizza Xcode o Apple Configurator. Le applicazioni Enterprise vengono distribuite tramite un server interno con manifest.plist. Un utente normale non può installare un IPA senza jailbreak o TestFlight.
Fat IPA contiene più architetture (arm64 + x86_64) per build universali. Thin IPA contiene una sola architettura per un dispositivo specifico. Apple accetta solo thin IPA per la pubblicazione — i binari fat vengono rifiutati.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche