Guide

Publier une app iOS sur l’App Store sans posséder de Mac

Vous pouvez publier une app iOS sans posséder de Mac. Vous ne pouvez pas le faire sans macOS. Compiler et signer l’app demande Xcode. Presque tout le reste se passe dans un navigateur ou sur votre iPhone. Un Mac loué ou un runner CI couvre la seule étape qui demande macOS.

Ce qu’Apple exige en octobre 2026

  • Une adhésion payante. L’Apple Developer Program coûte 99 USD par année d’adhésion, selon la page d’inscription d’Apple. Les associations, écoles et organismes publics peuvent demander une exonération.
  • Un Xcode récent. Depuis le 28 avril 2026, les envois doivent être compilés avec Xcode 26 ou plus récent et un SDK iOS 26. C’est indiqué sur la page des exigences à venir d’Apple.
  • Un macOS récent. Xcode 26.6 demande macOS Tahoe 26.2 ou plus récent, selon la configuration requise pour Xcode publiée par Apple.

Le build se fait donc sur un Mac. La seule question est : le Mac de qui ?

Ce que vous pouvez faire depuis Windows ou Linux

  • Vous inscrire au programme sur le web ou dans l’app Apple Developer.
  • Créer la fiche de l’app dans App Store Connect.
  • Créer une clé API App Store Connect (étapes ci-dessous).
  • Ajouter des testeurs, rédiger la fiche de l’App Store et soumettre à la revue.
  • Envoyer un build terminé. L’outil en ligne de commande Transporter d’Apple prend en charge Windows 11 et Red Hat Enterprise Linux. Sur ces systèmes, il a besoin du fichier AppStoreInfo.plist que Xcode écrit à l’export. L’envoi peut donc partir de votre PC, mais le fichier vient toujours d’un Mac.

Créez d’abord une clé API

Une clé API permet aux outils du Mac de dialoguer avec Apple. Aucun mot de passe ni code à deux facteurs n’est demandé. Voici les étapes d’Apple pour une clé d’équipe :

  • Dans App Store Connect, ouvrez Users and Access, puis Integrations.
  • Choisissez App Store Connect API, puis l’onglet Team Keys.
  • Cliquez sur Generate API Key, nommez-la, choisissez un rôle et générez-la.
  • Téléchargez le fichier .p8. Apple ne permet de le télécharger qu’une seule fois.

Il faut le rôle Admin pour créer des clés d’équipe. Notez le Key ID et l’Issuer ID affichés sur cette page. Gardez le fichier .p8 hors de votre dépôt.

Signer sans trousseau à vous

La signature demande un certificat de distribution et un profil de provisionnement. Il y a deux façons de les obtenir sur un Mac loué.

Signature automatique. xcodebuild accepte la clé API. Avec l’option allowProvisioningUpdates, son aide indique qu’il crée et met à jour les profils, les app IDs et les certificats des cibles signées automatiquement. Apple propose aussi des certificats de distribution gérés dans le cloud. Apple les conserve, donc aucune clé privée ne reste sur la machine louée.

Signature manuelle. Créez une demande de signature de certificat avec Trousseau d’accès sur le Mac loué. Puis créez un certificat Apple Distribution et un profil App Store dans Certificates, Identifiers and Profiles. Effacez le trousseau avant de rendre le Mac.

Compiler et envoyer depuis le Mac dans le cloud

Archivez l’app. Remplacez les noms, le key ID et l’issuer ID par les vôtres.

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

Puis exportez-la. Avec destination réglée sur upload, l’export envoie le build directement à App Store Connect. Le nom de méthode app-store-connect a remplacé l’ancienne valeur 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

Vous préférez une étape d’envoi séparée ? Réglez destination sur export, puis utilisez altool. Il trouve le fichier de clé dans ~/private_keys grâce à son ID.

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

Les utilisateurs de fastlane peuvent faire de même avec deux actions de sa documentation : app_store_connect_api_key charge la clé, et pilot envoie sur TestFlight.

Nous avons vérifié chaque option ci-dessus dans l’aide de xcodebuild et d’altool avec Xcode 26.6. Nous n’avons pas fait d’envoi signé avec ces lignes exactes. La configuration de signature de votre projet décide des détails.

Numéros de version et de build

Apple rattache chaque envoi à votre app par son bundle ID et son numéro de version. La chaîne de build identifie chaque build, elle doit donc être unique. Augmentez le numéro de build à chaque envoi. En CI, le numéro du run est une source pratique. Gardez le numéro de version pour ce que les utilisateurs voient dans l’App Store.

TestFlight sur votre iPhone

Apple traite chaque envoi et vous prévient par e-mail quand il est prêt. Ensuite, le reste se passe dans App Store Connect et sur le téléphone. D’après la présentation de TestFlight par Apple :

  • Jusqu’à 100 testeurs internes issus de votre équipe App Store Connect.
  • Jusqu’à 10 000 testeurs externes, par e-mail ou lien public.
  • Le premier build destiné aux testeurs externes passe par l’App Review.
  • Chaque build peut être testé pendant 90 jours au plus.

Les testeurs installent l’app gratuite TestFlight et acceptent l’invitation. Rien de tout cela ne demande un Mac. Les captures d’écran pour l’App Store se font facilement dans le simulateur du Mac loué.

Qui ne devrait pas louer un Mac pour cela

Avec Expo, EAS Build et EAS Submit font le build et l’envoi dans le cloud d’Expo. Si vous publiez deux fois par an, un runner CI hébergé coûte quelques centimes par build. Lisez la CI/CD iOS avec GitHub Actions pour cette configuration. MacRun ne propose pas de signature de code gérée. Vos certificats et vos clés restent à vous.

Un Mac loué convient quand vous publiez souvent. Il convient aussi quand vous avez besoin de l’écran de Xcode pour corriger la signature à la main. Nos offres M6 sont sur la page des tarifs.

Questions fréquentes

Peut-on publier une app iOS sans Mac ?

+

Oui, si vous avez accès à macOS quelque part. Le build et la signature demandent Xcode sur un Mac, qui peut être loué ou dans le cloud. L’inscription, App Store Connect, TestFlight et la revue se font tous depuis un navigateur ou un iPhone.

Puis-je envoyer un .ipa sur App Store Connect depuis Windows ?

+

L’outil en ligne de commande Transporter d’Apple prend en charge Windows 11 et Red Hat Enterprise Linux. Sur ces systèmes, il a besoin du fichier AppStoreInfo.plist que Xcode exporte avec le build. Le .ipa doit donc toujours être compilé sur un Mac.

Quel Xcode faut-il pour envoyer une app en 2026 ?

+

Depuis le 28 avril 2026, Apple exige que les apps envoyées sur App Store Connect soient compilées avec Xcode 26 ou plus récent et un SDK iOS 26. Xcode 26.6 tourne sur macOS Tahoe 26.2 ou plus récent.

Combien coûte une publication sur l’App Store ?

+

L’Apple Developer Program coûte 99 USD par année d’adhésion. Des exonérations existent pour les associations, écoles et organismes publics éligibles. Le temps de Mac pour compiler s’ajoute : de quelques centimes par build en CI hébergée à une location mensuelle.

Guides associés