IPA: cos'è, struttura del file e principio di funzionamento

Autore: IT Sectr Pubblicato: 2026-04-15 Tempo di lettura: 8 min

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 è un formato di archivio per distribuire applicazioni iOS tramite App Store e installazione ad-hoc.
  • Struttura include un file eseguibile Mach-O firmato, risorse e un Provisioning Profile.
  • Firma è obbligatoria: senza un certificato e profilo validi, l'IPA non viene installato.
  • Compilazione viene eseguita tramite Xcode con supporto di diversi schemi: Debug, Release, Ad-hoc, Enterprise.
  • Architetture — gli IPA moderni contengono binari arm64, senza supporto per dispositivi a 32 bit.

Cos'è IPA e a cosa serve

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.

Storia del formato

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.

Casi d'uso

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.

Struttura interna del file IPA

La struttura interna di un IPA è un archivio ZIP contenente una cartella Payload con il bundle .app e metadati.

File/DirectoryScopo
Payload/Cartella radice con il bundle .app
Payload/App.app/Bundle dell'applicazione: file eseguibile, risorse, nib/storyboard
Payload/App.app/Info.plistMetadati: bundle ID, versioni, permessi
Payload/App.app/embedded.mobileprovisionProvisioning Profile per l'installazione
iTunesMetadata.plistMetadati iTunes (opzionale)
META-INF/Firme e hash per la verifica

Il bundle .app

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.

File eseguibile Mach-O

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.

Processo di compilazione dell'IPA tramite Xcode

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.

Schemi di compilazione

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.

objective-c
// 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>

Architettura di compilazione

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 dell'IPA e Provisioning Profile

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.

Componenti della firma

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).

Processo di firma

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.

swift
// 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
}

Pubblicazione dell'IPA in App Store Connect

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.

Processo di caricamento

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.

Riga di comando

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.

App Thinning: ottimizzazione dell'IPA per i dispositivi

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.

Test dell'IPA tramite TestFlight

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.

Test interni ed esterni

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.

Limitazioni di TestFlight

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.

IPA e Integrazione Continua

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.

Problemi tipici con l'IPA

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.

Errore di firma: No matching provisioning profile found

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.

ITMS-90125: The binary is invalid

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.

Invalid Bundle Structure: The bundle is missing the required .app bundle

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.

Distribuzione di IPA senza App Store

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

In cosa differisce IPA da APK?

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).

Si può compilare IPA su Windows?

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).

Quanto pesa un IPA tipico?

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.

Come installare IPA senza App Store?

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.

Cosa sono IPA thin e IPA fat?

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

  • IPA è un formato di distribuzione di applicazioni iOS basato su ZIP con un file eseguibile Mach-O.
  • Struttura include un bundle Payload/.app, Info.plist, firme e un Provisioning Profile.
  • Compilazione viene eseguita tramite Xcode compilando Swift/Objective-C in codice macchina arm64.
  • Firma è obbligatoria: certificato + Provisioning Profile + entitlements vengono verificati da iOS durante l'installazione.
  • Pubblicazione passa attraverso App Store Connect con verifica delle App Store Review Guidelines.
  • TestFlight è lo strumento ufficiale di beta testing per un massimo di 10.000 tester.
  • Limitazioni: compilazione solo su macOS, firma obbligatoria, dimensione massima di 4 GB.

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.

Discuti il progetto

Leggi anche