Guida

Pubblicare un’app iOS sull’App Store senza avere un Mac

Puoi pubblicare un’app iOS senza avere un Mac. Non puoi farlo senza macOS. Compilare e firmare l’app richiede Xcode. Quasi tutto il resto si fa in un browser o sul tuo iPhone. Un Mac a noleggio o un runner di CI coprono l’unico passaggio che richiede macOS.

Cosa richiede Apple a ottobre 2026

  • Un abbonamento a pagamento. L’Apple Developer Program costa 99 USD per anno di iscrizione, secondo la pagina di iscrizione di Apple. Organizzazioni non profit, scuole ed enti pubblici possono chiedere l’esenzione dalla quota.
  • Un Xcode recente. Dal 28 aprile 2026, gli upload devono essere compilati con Xcode 26 o successivo e con un SDK iOS 26. Lo dice la pagina dei requisiti in arrivo di Apple.
  • Un macOS recente. Xcode 26.6 richiede macOS Tahoe 26.2 o successivo, secondo i requisiti di sistema di Xcode.

Quindi la build avviene su un Mac. L’unica domanda è di chi sia il Mac.

Cosa puoi fare da Windows o Linux

  • Iscriverti al programma dal web o dall’app Apple Developer.
  • Creare la scheda dell’app in App Store Connect.
  • Creare una chiave API di App Store Connect (i passaggi sono qui sotto).
  • Aggiungere i tester, scrivere la scheda dello store e inviare per la revisione.
  • Caricare una build finita. Lo strumento a riga di comando Transporter di Apple supporta Windows 11 e Red Hat Enterprise Linux. Su questi sistemi richiede il file AppStoreInfo.plist che Xcode scrive durante l’export. Quindi l’upload può partire dal tuo PC, ma il file arriva comunque da un Mac.

Per prima cosa, crea una chiave API

Una chiave API permette agli strumenti sul Mac di parlare con Apple. Non servono password né richieste di autenticazione a due fattori. Ecco i passaggi di Apple per una chiave del team:

  • In App Store Connect, apri Utenti e accessi, poi Integrazioni.
  • Scegli App Store Connect API, poi la scheda Chiavi del team.
  • Fai clic su Genera chiave API, dalle un nome, scegli un ruolo e genera.
  • Scarica il file .p8. Apple ti permette di scaricarlo una sola volta.

Per creare chiavi del team serve il ruolo Admin. Annota il Key ID e l’Issuer ID mostrati in quella pagina. Tieni il file .p8 fuori dal tuo repository.

Firmare senza un portachiavi tuo

Per firmare servono un certificato di distribuzione e un profilo di provisioning. Ci sono due modi per averli su un Mac a noleggio.

Firma automatica. xcodebuild accetta la chiave API. Con il flag allowProvisioningUpdates, secondo il suo testo di aiuto, crea e aggiorna profili, app ID e certificati per i target con firma automatica. Apple offre anche certificati di distribuzione gestiti nel cloud. Li conserva Apple, quindi nessuna chiave privata resta sulla macchina noleggiata.

Firma manuale. Crea una richiesta di firma del certificato con Accesso Portachiavi sul Mac noleggiato. Poi crea un certificato Apple Distribution e un profilo App Store in Certificati, identificatori e profili. Svuota il portachiavi prima di restituire il Mac.

Build e upload dal Mac in cloud

Archivia l’app. Sostituisci i nomi, il key ID e l’issuer ID con i tuoi.

xcodebuild -workspace MyApp.xcworkspace -scheme MyApp \
  -configuration Release -destination 'generic/platform=iOS' \
  -archivePath build/MyApp.xcarchive archive \
  -allowProvisioningUpdates \
  -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \
  -authenticationKeyID ABC123DEF4 \
  -authenticationKeyIssuerID YOUR-ISSUER-ID

Poi esportala. Con destination impostato su upload, l’export invia la build direttamente ad App Store Connect. Il nome di metodo app-store-connect ha sostituito il vecchio valore app-store.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>method</key><string>app-store-connect</string>
  <key>destination</key><string>upload</string>
  <key>signingStyle</key><string>automatic</string>
  <key>teamID</key><string>YOURTEAMID</string>
</dict>
</plist>
xcodebuild -exportArchive -archivePath build/MyApp.xcarchive \
  -exportOptionsPlist ExportOptions.plist -exportPath build/export \
  -allowProvisioningUpdates \
  -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \
  -authenticationKeyID ABC123DEF4 \
  -authenticationKeyIssuerID YOUR-ISSUER-ID

Preferisci un passaggio di upload separato? Imposta destination su export, poi usa altool. Trova il file della chiave in ~/private_keys tramite il suo ID.

xcrun altool --upload-package build/export/MyApp.ipa \
  --api-key ABC123DEF4 --api-issuer YOUR-ISSUER-ID

Con fastlane puoi fare lo stesso usando due azioni della sua documentazione: app_store_connect_api_key carica la chiave, e pilot carica la build su TestFlight.

Abbiamo verificato ogni flag qui sopra con l’output di aiuto di xcodebuild e altool in Xcode 26.6. Non abbiamo eseguito un upload firmato con queste righe esatte. I dettagli dipendono dalla configurazione di firma del tuo progetto.

Numeri di versione e di build

Apple associa ogni upload alla tua app tramite il bundle ID e il numero di versione. La stringa di build identifica ogni build, quindi deve essere unica. Aumenta il numero di build a ogni upload. In CI, il numero dell’esecuzione è una fonte comoda. Usa il numero di versione per quello che gli utenti vedono nello store.

TestFlight sul tuo iPhone

Apple elabora ogni upload e ti manda un’email quando è pronto. Poi il resto avviene in App Store Connect e sul telefono. Secondo la panoramica di TestFlight di Apple:

  • Fino a 100 tester interni dal tuo team di App Store Connect.
  • Fino a 10.000 tester esterni via email o link pubblico.
  • La prima build per i tester esterni passa dall’App Review.
  • Ogni build si può testare per un massimo di 90 giorni.

I tester installano l’app gratuita TestFlight e accettano l’invito. Per niente di tutto questo ti serve un Mac. Gli screenshot per lo store si fanno facilmente nel simulatore sul Mac noleggiato.

Chi non dovrebbe noleggiare un Mac per questo

Con Expo, EAS Build ed EAS Submit fanno build e upload nel cloud di Expo. Se pubblichi due volte l’anno, un runner di CI in hosting costa pochi centesimi a build. Leggi CI/CD iOS con GitHub Actions per quel setup. MacRun non offre una firma del codice gestita. I certificati e le chiavi sono tuoi.

Un Mac a noleggio è adatto quando pubblichi spesso. È adatto anche quando ti serve lo schermo di Xcode per sistemare la firma a mano. I nostri piani M6 sono nella pagina dei prezzi.

Domande frequenti

Si può pubblicare un’app iOS senza Mac?

+

Sì, se puoi raggiungere macOS da qualche parte. Build e firma richiedono Xcode su un Mac, che può essere a noleggio o in cloud. Iscrizione, App Store Connect, TestFlight e revisione funzionano tutti da un browser o da un iPhone.

Posso caricare un .ipa su App Store Connect da Windows?

+

Lo strumento a riga di comando Transporter di Apple supporta Windows 11 e Red Hat Enterprise Linux. Su questi sistemi richiede il file AppStoreInfo.plist che Xcode esporta con la build. Quindi il .ipa va comunque compilato su un Mac.

Quale Xcode mi serve per caricare un’app nel 2026?

+

Dal 28 aprile 2026, Apple richiede che le app caricate su App Store Connect siano compilate con Xcode 26 o successivo, usando un SDK iOS 26. Xcode 26.6 gira su macOS Tahoe 26.2 o successivo.

Quanto costa pubblicare sull’App Store?

+

L’Apple Developer Program costa 99 USD per anno di iscrizione. Esistono esenzioni dalla quota per non profit, scuole ed enti pubblici che ne hanno diritto. Il tempo su Mac per le build è a parte: da pochi centesimi a build con la CI in hosting fino a un noleggio mensile.

Guide correlate