Développement iOS sans MacBook grâce à l'utilitaire Builder
Quiconque a essayé de développer des applications mobiles en Flutter ou React Native sous Linux ou Windows se heurte inévitablement au mur matériel d'Apple. Compiler pour Android prend quelques minutes en local, mais iOS nécessite toujours un Mac avec Xcode installé. Acheter un Mac mini juste pour générer un artifact de test deux fois par semaine ressemble à un investissement discutable, surtout pour des projets personnels ou de petites équipes.
Récemment, je suis tombé sur le dépôt ios-builder de l'équipe MobAI. C'est un petit utilitaire Go qui gère la routine : déclenche une compilation dans le cloud GitHub Actions, télécharge le fichier IPA prêt, et connecte le processus de développement local à un vrai iPhone.

Comment ça fonctionne en interne
L'idée est évidente, mais ici ils en ont fait un outil CLI prêt à l'emploi. Au lieu de configurer manuellement des pipelines complexes, vous installez l'utilitaire builder, qui génère un fichier de workflow pour GitHub Actions.
Le workflow ressemble à ceci :
- Vous exécutez la commande de build dans le terminal.
- Le CLI pousse le code vers votre dépôt et démarre un runner GitHub Actions sur macOS.
- Xcode dans le cloud compile le projet et package l'artifact.
- L'utilitaire télécharge le IPA prêt dans le dossier local
./dist/.
Cela signifie que vous n'avez pas besoin de payer pour un Mac — vous utilisez les minutes CI gratuites de GitHub. Cependant, les comptes gratuits ont un multiplicateur x10 pour macOS. Sur les 20 000 minutes gratuites par mois sur les runners Mac, il vous reste environ 2 000 minutes. C'est environ 15-20 builds. C'est amplement suffisant pour les releases et les tests périodiques, mais vous ne pourrez pas exécuter de CI à chaque commit.
Ce que peut faire l'utilitaire
L'outil est conçu pour fonctionner avec les stacks multiplateformes populaires et les projets natifs.
- Détection automatique de la structure du projet. L'utilitaire comprend les projets Flutter, React Native classique, Expo exporté, Cordova/Ionic, et les projets Swift natifs.
- Gestion du code signing. Vous pouvez télécharger les certificats et les provisioning profiles directement dans les secrets GitHub via la commande
builder signing setup. - Hot Reload. La partie la plus utile pour ceux qui développent en Flutter ou React Native.
- Exécution sur un simulateur distant. Via le service MobAI, vous pouvez tester l'application compilée dans un simulateur directement depuis votre navigateur ou client desktop, bien que cette option nécessite un abonnement Pro.
Configuration et première exécution
L'installation est simple. Sous Windows, vous pouvez télécharger un binaire prêt à l'emploi depuis la page des releases, et sous Linux, WSL ou macOS, exécutez la commande via le terminal :
curl -sSL https://raw.githubusercontent.com/MobAI-App/ios-builder/main/install.sh | bash
Ou compilez depuis les sources si vous avez déjà Go sur votre machine :
git clone https://github.com/MobAI-App/ios-builder.git
cd ios-builder
go build -o builder ./cmd/builder
Après l'installation, vous devez vous autoriser avec GitHub et initialiser le projet à la racine du dépôt :
builder auth github
cd your-ios-project
builder init
La commande builder init en mode interactif va créer un fichier de configuration .github/workflows/ios-build.yml et un builder.json local.
Exemple de contenu de builder.json :
{
"project": "MyApp",
"platform": "ios",
"github": {
"owner": "username",
"repo": "my-ios-app"
},
"ios": {
"path": "ios",
"scheme": "",
"signing": true
},
"mobai": {
"url": "http://localhost:8686",
"device_id": ""
},
"flutter": {
"watch": {
"dirs": ["lib"],
"patterns": [".dart"],
"ignore": [".g.dart", ".freezed.dart"],
"debounce": 100
}
}
}
Un build se lance avec une seule ligne :
builder ios build
Si les certificats Apple Developer ne sont pas encore configurés, vous pouvez compiler un build non signé avec le flag --unsigned.
Développement avec Hot Reload sans macOS
Compiler un fichier IPA n'est que la moitié de la bataille. La vraie galère commence quand vous devez corriger rapidement l'UI et la logique. Recompiler le projet dans la CI à chaque changement de bouton n'a aucun sens car le build prend plusieurs minutes.
Les développeurs ont résolu ce problème en s'intégrant avec leur application MobAI, qui connecte un vrai iPhone à votre ordinateur via USB.
Le workflow Flutter ressemble à ceci :
- Vous connectez votre iPhone à votre PC Windows ou Linux via un câble.
- Vous compilez le IPA de base via
builder ios buildet l'installez sur l'appareil. - Vous démarrez le mode développement :
builder dev flutter
L'utilitaire démarre un file watcher dans le répertoire lib/. Quand vous modifiez du code Dart et sauvegardez le fichier, builder envoie un signal Hot Reload via flutter attach. Les fichiers générés comme .freezed.dart et .g.dart sont ignorés pour éviter de déclencher des reloads inutiles.
Vous n'aurez besoin de recompiler toute l'application via le cloud que quand vous touchez du code natif : modification de Podfile, ajout de plugins avec des dépendances natives complexes, ou édition de fichiers Swift.
Pour React Native, le processus est pratiquement le même :
builder dev rn
La commande démarre un serveur Metro local, redirige le bon port, et connecte le bundler à l'application qui tourne sur le téléphone. Si vous travaillez dans WSL2, vous devrez autoriser les connexions externes dans les paramètres MobAI et spécifier l'adresse réseau de la machine Windows hôte.
Pièges à éviter
L'outil est attractif, mais il y a plusieurs questions pratiques à son sujet :
Lors du re-signing de l'app à la volée via un compte Apple ID gratuit, le Bundle ID change (un suffixe d'équipe est ajouté). Cela peut casser les push notifications ou Connexion avec Apple si elles sont liées à un identifiant spécifique.
Dépendance envers l'utilitaire tiers MobAI. Le CLI builder lui-même est distribué sous licence MIT gratuite et est écrit de manière transparente. Cependant, une partie des fonctionnalités (installation sur les appareils, simulateurs) repose sur l'application propriétaire MobAI, où certaines fonctionnalités sont payantes.
Limites de GitHub Actions. Si vous êtes dans une phase active de mise en page d'UI native sans frameworks, les minutes gratuites sur les runners seront vite épuisées.
Est-ce que ça vaut le coup d'essayer
Si vous développez en Flutter ou React Native sur Windows/Linux et que vous avez occasionnellement besoin de tester l'application sur un vrai iPhone ou de construire une version de test pour un client, ios-builder vous fera gagner beaucoup de temps et de nerfs. Cela élimine le besoin d'écrire manuellement des fichiers YAML pour GitHub Actions et de configurer les téléchargements d'artifacts.
Pour les grands projets avec des exigences de sécurité de certificats strictes et des pipelines CI/CD complexes, vous aurez toujours besoin d'un Mac dédié. Mais pour les développeurs indépendants et les petites équipes, c'est une solution de contournement pratique.
Projets similaires