Si Flutter ou React Native sur des Mac distants dédiés en Singapour, Japon, Corée, Hong Kong, US Est/Ouest n’est instable que lorsque les deux plateformes tournent, la cause est souvent mémoire unifiée, amplification SSD et politique de daemons Gradle, pas le nombre de cœurs. Liste de douleurs, matrice, runbook, métriques et liens vers articles publics.
Signal 9 ou des arrêts Gradle en phase de transform.DerivedData et caches SwiftPM..gradle, .pub-cache, node_modules mélangés cassent audit et reproductibilité.Lire avec capacité Simulator, runners self-hosted et CI hybride ; cet article cible la collision des chaînes Android et Apple.
Trois budgets : pression mémoire/swap, marge SSD, egress transrégional. Dans un bail court, sérialiser avant d’acheter des GHz.
| Scénario | M4 16Go | M4 Pro | Rouge |
|---|---|---|---|
| CLI seulement | Gradle workers 2, Xcode sérialisé | workers 3–4 | swap qui monte, <10Go libre |
| Flutter integration + Simulator | Android unit puis iOS UI, pas de daemons saturés | flutter drive plafonné | Metal+Java fige SSH |
| RN release + archive | fenêtres temporelles, ./gradlew --stop avant archive | GRADLE_USER_HOME séparé | codesign+zipalign I/O |
Principe : la cohabitation lie souvent mémoire unifiée et SSD, pas les cœurs.
GRADLE_USER_HOME/PUB_CACHE sur volume de données ; aligner DerivedData reproductible.android/.cxx → rotation DerivedData → git../gradlew --stop || true export GRADLE_USER_HOME="$WORK_ROOT/.gradle-isolation" export ANDROID_SDK_ROOT="$WORK_ROOT/android-sdk" defaults write com.apple.dt.Xcode IDECustomDerivedDataLocation -string "$WORK_ROOT/DerivedData" export FLUTTER_ANALYZER_CONCURRENCY=2 export ORG_GRADLE_PROJECT_org.gradle.workers.max=2
Linux découple la RAM mais duplique files et secrets. Le local réintroduit la dérive.
Pour des nœuds Singapour, Japon, Corée, Hong Kong, US Est/Ouest avec chemins chauds alignés, MACCOME (M4/M4 Pro, baux flexibles) aide à budgétiser mémoire/disque avant de pousser la parallélisation de compilation.
Table outillage, matrice co-hébergement/split, carte nettoyage ↔ bail ; frontière avec FinOps monorepo.
Si Android n’utilise jamais le Mac, retour runners. Avec egress, journaliser NDK/Engine dans le même registre.
FAQ
Faut-il toujours tuer les daemons Gradle en co-hébergement ?
Pas toujours désactivés, mais terminez pipelines/shells avec ./gradlew --stop ou eviction idle—surtout sur baux courts. Voir tarifs.
Quand séparer sur deux machines ?
Si les rétros restent rouges après sérialisation ou si la conformité impose de séparer signatures Android et matériel iOS. Voir commander un Mac mini cloud.