Compiler votre app iOS depuis Windows, framework par framework
Vous pouvez écrire une app Flutter, React Native, Unity, Godot ou MAUI sous Windows. Le build iOS est la seule étape qui demande un Mac. Tous ces outils confient la dernière étape à Xcode. Cette page liste ce que vous lancez sur le Mac pour chaque framework. Elle montre aussi comment envoyer le résultat.
Ce qui demande un Mac, par framework
Voici ce que dit la documentation de chaque projet, lue le 18 octobre 2026.
- Flutter : le guide de publication iOS dit que Xcode est requis et qu’il faut un appareil sous macOS. Votre code Dart et vos builds Android peuvent rester sous Windows ou Linux.
- React Native : le guide App Store fait le build de release dans Xcode. Le travail JavaScript et les tests Jest tournent sur n’importe quel système.
- Expo : EAS Build lance les builds iOS sur des machines macOS dans le cloud d’Expo. Vous n’aurez peut-être jamais besoin de votre propre Mac.
- Unity : l’éditeur génère un projet Xcode, et Xcode compile l’app à partir de lui. Unity dit qu’un build iOS local demande macOS.
- Godot : la documentation dit qu’il faut exporter pour iOS depuis un ordinateur sous macOS avec Xcode installé. Même l’export passe donc sur le Mac.
- .NET MAUI : Visual Studio sous Windows se connecte à un Mac en SSH, et le Mac compile et signe l’app.
Deux guides plus anciens couvrent le cas général. Lisez publier sans Mac pour les clés API, la signature et TestFlight. Lisez Xcode sous Windows pour l’écran et le clavier à distance. Cette page s’en tient aux commandes.
Avant de commencer : compte et signature
- Il vous faut une adhésion payante à l’Apple Developer Program. Elle coûte 99 USD par an.
- Créez la fiche de l’app dans App Store Connect, qui marche depuis n’importe quel navigateur.
- Ajoutez votre compte Apple à Xcode sur le Mac, puis choisissez votre équipe dans Signing and Capabilities.
- Laissez Automatically manage signing activé. Xcode crée alors le certificat et le profil pour vous.
Flutter : flutter build ipa
Installez Flutter sur le Mac et clonez-y votre dépôt. Puis lancez cette seule commande dans le dossier du projet :
flutter build ipa
D’après la documentation de Flutter, cela écrit un .xcarchive dans build/ios/archive et un .ipa dans build/ios/ipa. Utilisez --build-name et --build-number pour régler la version. Flutter décrit trois façons d’envoyer le résultat. Vous pouvez glisser le .ipa dans l’app Transporter d’Apple sur le Mac. Vous pouvez ouvrir l’archive dans Xcode et cliquer sur Distribute App. Ou vous pouvez l’envoyer depuis le terminal avec une clé API App Store Connect :
xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa \ --apiKey your_api_key --apiIssuer your_issuer_id
React Native : archiver dans Xcode
Le guide React Native fait la release dans la fenêtre de Xcode. Installez d’abord les pods, puis ouvrez le workspace :
cd ios bundle exec pod install open MyApp.xcworkspace
- Dans Product, Scheme, Edit Scheme, réglez la configuration de build Run sur Release.
- Choisissez l’appareil Any iOS Device (arm64), puis Product, puis Archive.
- Dans la fenêtre d’archive, cliquez sur Distribute App, puis App Store Connect, puis Upload.
Le build apparaît ensuite dans App Store Connect, sous TestFlight. Pour publier depuis le terminal, utilisez xcodebuild archive et -exportArchive, avec les options de notre guide de publication. Pour tout le workflow sous Windows et Linux, voyez les builds iOS React Native sans Mac.
Avec Expo, vous pouvez vous passer du Mac pour les builds. Lancez ceci depuis Windows, et le build se fait sur les runners macOS d’Expo :
eas build --platform ios
Il vous faut quand même un Mac pour le simulateur ou le débogueur de Xcode.
Unity : build sous Windows, archive sur le Mac
Dans Build Settings, choisissez iOS et cliquez sur Build. Unity écrit un dossier avec un projet Xcode. L’option Run in Xcode n’apparaît que sous macOS, donc sous Windows vous vous arrêtez là. Copiez le dossier sur le Mac en SSH :
scp -r Builds/iOS you@your-mac:~/MyGame-iOS
Sur le Mac, ouvrez le .xcodeproj dans ce dossier. Choisissez le scheme Unity-iPhone. C’est la cible de lancement qui fait tourner UnityFramework. Choisissez l’appareil Any iOS Device, puis Product, puis Archive. Distribuez-la depuis la fenêtre Organizer comme n’importe quelle app iOS.
Un gros jeu donne un gros dossier, donc le temps de copie dépend de votre débit montant. Unity propose aussi Build Automation, qui compile le jeu dans le cloud d’Unity.
Godot : exporter sur le Mac
L’export iOS de Godot ne marche que sous macOS. Installez Godot et ses modèles d’export sur le Mac, puis ouvrez-y votre projet.
- Ouvrez Project, puis Export, puis cliquez sur Add et choisissez iOS.
- Remplissez App Store Team ID et Bundle Identifier. L’exportateur exige les deux.
- Le Team ID est un code de 10 caractères, pas votre nom tel que Xcode l’affiche.
- Cliquez sur Export Project et choisissez un dossier vide pour les fichiers.
- Ouvrez le .xcodeproj généré, puis choisissez Product, puis Archive.
.NET MAUI : associer Visual Studio au Mac
La fonction Pair to Mac de Microsoft lance les builds Mac en SSH. Remote Login doit donc être activé. Xcode doit être installé à la main et ouvert une fois. Microsoft demande aussi Mono, et Rosetta sur Apple silicon. Dans Visual Studio, ouvrez Tools, iOS, Pair to Mac. Si le Mac n’apparaît pas, ajoutez-le par son adresse.
Vous pouvez aussi publier depuis la ligne de commande Windows. Voici l’exemple de Microsoft pour Visual Studio 2026, sans le mot de passe :
dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true \
-p:RuntimeIdentifier=ios-arm64 \
-p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" \
-p:CodesignProvision="MyMauiApp" \
-p:ServerAddress={macOS build host IP address} \
-p:ServerUser={macOS username} -p:TcpPort=58181 \
-p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/maui/PairToMac/SDKs/dotnet/Remplacez net8.0-ios par votre propre framework cible. Sans option de mot de passe, Pair to Mac utilise les clés SSH enregistrées à la première connexion. Le .ipa signé arrive sous bin\Release sur votre PC. Microsoft conseille Transporter pour l’envoi.
L’envoi : ce qu’Apple liste aujourd’hui
La page d’envoi d’Apple cite quatre outils : Xcode, Swift Playground, altool et Transporter. Elle dit que Transporter et altool gèrent tous les types de cibles, et elle ne donne aucune date de fin pour altool. Transporter est une app macOS, mais sa version en ligne de commande tourne aussi sous Windows, avec quelques limites. Notre guide de publication explique ces limites.
Build dans le cloud ou Mac loué ?
Partez de votre besoin. Si vous n’avez besoin d’un .ipa que de temps en temps, un build dans le cloud peut suffire. Codemagic, EAS Build et les runners macOS de GitHub Actions compilent tous des apps iOS. Notre guide GitHub Actions montre une configuration.
Un Mac loué sert à d’autres tâches. Vous aurez peut-être besoin du simulateur pour vérifier un écran, ou du débogueur de Xcode pour un crash. Une erreur de signature se corrige plus facilement dans la fenêtre de Xcode. Et certaines équipes veulent suivre chaque étape d’une release en direct.
Le jour de la release sur un Mac à $15
Beaucoup d’apps ne sortent que quelques fois par an. Pour cela, un pass d’un jour MacRun coûte $15, payé une seule fois, sans renouvellement. Une semaine coûte $59, ce qui laisse le temps d’un correctif après la revue. Si vous publiez toutes les quelques semaines, les offres mensuelles commencent à $139.
- Vous avez un Mac mini dédié, pas partagé, avec les droits administrateur.
- Xcode 27.1 est la version par défaut, et Xcode 26.6 est installé pour les anciens projets.
- Le simulateur iOS 27.1, avec l’iPhone Duo, est déjà installé.
- Le Mac est prêt en moins de 5 minutes.
- SSH et le partage d’écran passent par un réseau Tailscale privé, depuis Windows ou Linux.
Le Mac est effacé à la fin du pass. Poussez votre code et copiez vos fichiers de signature avant.
Questions fréquentes
Puis-je compiler une app iOS sous Windows ?
+
Vous pouvez l’écrire sous Windows. Le build iOS demande Xcode, qui ne tourne que sous macOS. Pour cette étape, utilisez un Mac loué, un runner CI ou un service de build dans le cloud.
Flutter peut-il compiler pour iOS sous Windows ?
+
Non. Le guide de publication iOS de Flutter dit qu’il faut un appareil sous macOS pour cette étape. Lancez flutter build ipa sur un Mac, puis envoyez le .ipa avec Transporter, altool ou Xcode.
Puis-je compiler une app React Native iOS sans Mac ?
+
Avec Expo, oui, car EAS Build lance les builds iOS sur des machines macOS dans le cloud d’Expo. Sans Expo, il vous faut un Mac pour archiver l’app dans Xcode.
Unity peut-il compiler pour iOS sous Windows ?
+
Unity génère le projet Xcode. Xcode compile ensuite l’app, et Xcode ne tourne que sous macOS. Copiez le projet sur un Mac et archivez-le là-bas, ou utilisez Unity Build Automation.
Comment envoyer une app iOS depuis Windows ?
+
L’outil en ligne de commande Transporter d’Apple tourne sous Windows. Il lui faut quand même un fichier que Xcode exporte avec le build. Le build lui-même vient donc d’un Mac.