Если Flutter или React Native на выделенных удалённых Mac в Сингапуре, Японии, Корее, Гонконге, востоке/западе США нестабилен только вместе, причина обычно в unified memory, SSD-усилении записи и политике Gradle Daemon, а не в числе ядер. Чеклист, матрица, runbook, метрики и перекрёстные ссылки.
Signal 9 у xcodebuild или падения Gradle на transform.DerivedData и кэшем SwiftPM..gradle, .pub-cache, node_modules без изоляции ломают аудит.См. также параллель XCTest/Simulator, self-hosted runner, гибридный CI; здесь фокус на столкновении Android- и Apple-цепочек на одном хосте.
Три бюджета: давление памяти/swap, запас SSD, трансрегиональный egress. В коротком lease сначала сериализация, не покупка GHz.
| Сценарий | M4 16ГБ | M4 Pro | Красная зона |
|---|---|---|---|
| Только CLI | Gradle workers 2, Xcode последовательно | workers 3–4 | swap растёт, <10ГБ свободно |
| Flutter integration + Simulator | сначала Android unit, без полного daemon | flutter drive с лимитом | Metal+Java замирает SSH |
| RN release + archive | таймбоксы, перед archive ./gradlew --stop | раздельные GRADLE_USER_HOME/DerivedData | codesign+zipalign I/O |
Принцип: совместный хост чаще упирается в память и SSD, а не в ядра.
GRADLE_USER_HOME/PUB_CACHE на отдельный том; согласовать с DerivedData.android/.cxx → ротация 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 развязывает RAM, но дублирует ключи/очереди. Локально — дрейф без аудита.
Для Сингапура, Японии, Кореи, Гонконга, восток/запад США с выровненными Git/Registry и скриптовыми водоразделами DerivedData/.gradle, MACCOME на M4/M4 Pro с гибкой арендой обычно проще сначала снять пики памяти/диска.
Матрица тулчейнов, co-host/split, карта очистки↔lease; граница с Monorepo FinOps.
Если Android не на Mac — к runner-статье. С egress-runbook вести NDK/Engine в том же журнале.
Вопросы
Всегда ли гасить Gradle Daemon при совместном хосте?
Не обязательно навсегда, но завершайте пайплайны с ./gradlew --stop или idle-eviction — особенно на короткой аренде. См. цены аренды.
Когда делить на две машины?
Если ретроспективы после сериализации всё ещё красные или комплаенс требует разделить Android-подпись и iOS-ключи. См. центр помощи.