Разработка под iOS без макбука с помощью утилиты Builder

16 авг 2026
718
71
3
3 недели

Каждый, кто пробовал писать мобильные приложения на Flutter или React Native, сидя на Linux или Windows, неизбежно упирался в железную стену Apple. Собрать билд под Android можно за пару минут локально, а вот для iOS всегда нужен Mac с установленным Xcode. Покупка Mac mini ради сборки тестового артефакта два раза в неделю выглядит сомнительным вложением, особенно для пет-проектов или небольших команд.

Недавно наткнулся на репозиторий ios-builder от команды MobAI. Это небольшая утилита на Go, которая берет на себя рутину: триггерит сборку в облаке GitHub Actions, забирает готовый IPA-файл и связывает локальный процесс разработки с реальным айфоном.

Builder Demo

Как это устроено внутри

Идея лежит на поверхности, но здесь её довели до готового CLI-инструмента. Вместо того чтобы настраивать сложные пайплайны вручную, вы ставите утилиту builder, которая генерирует workflow-файл для GitHub Actions.

Схема работы выглядит так:

Реклама
  1. Вы запускаете команду сборки в терминале.
  2. CLI отправляет код в ваш репозиторий и запускает раннер GitHub Actions на macOS.
  3. Xcode в облаке компилирует проект и пакует артефакт.
  4. Утилита скачивает готовый IPA в локальную папку ./dist/.

Получается, что платить за Mac не нужно, вы расходуете бесплатные минуты CI от GitHub. Правда, у бесплатных аккаунтов на macOS действует повышающий коэффициент x10. Из 2000 бесплатных минут в месяц на раннерах Mac останется около 200 минут. Это примерно 15-20 сборок. Для релизов и периодических тестов вполне хватит, но гонять CI на каждый коммит не выйдет.

Что умеет утилита

Инструмент рассчитан на работу с популярными кроссплатформенными стеками и нативными проектами.

  • Автоматическое определение структуры проекта. Утилита понимает Flutter, чистый React Native, выгруженный Expo, Cordova/Ionic и нативные проекты на Swift.
  • Управление подписью кода. Можно загрузить сертификаты и provisioning profiles прямо в секреты GitHub через команду builder signing setup.
  • Горячая перезагрузка (Hot Reload). Самая полезная часть для тех, кто пишет на Flutter или React Native.
  • Запуск на удаленном симуляторе. Через сервис MobAI можно потыкать собранное приложение в симуляторе прямо из браузера или десктопного клиента, хотя эта опция требует подписки Pro.

Настройка и первый запуск

Установка простая. На Windows можно скачать готовый бинарник со страницы релизов, а на Linux, WSL или macOS выполнить команду через терминал:

curl -sSL https://raw.githubusercontent.com/MobAI-App/ios-builder/main/install.sh | bash

Или собрать из исходников, если на машине уже стоит Go:

git clone https://github.com/MobAI-App/ios-builder.git
cd ios-builder
go build -o builder ./cmd/builder

После установки нужно авторизоваться в GitHub и инициализировать проект в корне репозитория:

builder auth github
cd your-ios-project
builder init

Команда builder init в интерактивном режиме создаст конфигурационный файл .github/workflows/ios-build.yml и локальный builder.json.

Пример содержимого 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
    }
  }
}

Сборка запускается одной строкой:

builder ios build

Если сертификаты Apple Developer ещё не настроены, можно собрать неподписанный билд с флагом --unsigned.

Разработка с Hot Reload без macOS

Собрать IPA файл — это половина дела. Настоящая боль начинается, когда нужно быстро править интерфейс и логику. Пересобирать проект в CI ради каждой кнопки бессмысленно, потому что сборка занимает несколько минут.

Разработчики решили эту проблему интеграцией со своим приложением MobAI, которое связывает физический iPhone с компьютером по USB.

Сценарий для Flutter выглядит следующим образом:

  1. Вы подключаете iPhone к Windows или Linux ПК по кабелю.
  2. Собираете базовый IPA через builder ios build и устанавливаете его на устройство.
  3. Запускаете режим разработки:
builder dev flutter

Утилита запускает watcher файлов в директории lib/. Когда вы меняете код на Dart и сохраняете файл, builder сам шлет сигнал на Hot Reload через flutter attach. При этом сгенерированные файлы вроде .freezed.dart и .g.dart игнорируются, чтобы не триггерить лишние перезагрузки.

Пересобирать приложение целиком через облако придется только тогда, когда вы трогаете нативный код: меняете Podfile, добавляете плагины со сложными нативными зависимостями или правите Swift-файлы.

Для React Native процесс практически такой же:

builder dev rn

Команда поднимет локальный сервер Metro, прокинет правильный порт и свяжет бандлер с запущенным на телефоне приложением. Если работаете внутри WSL2, в настройках MobAI нужно будет разрешить внешние подключения и указать сетевой адрес хостовой Windows-машины.

Подводные камни

Инструмент выглядит привлекательно, но к нему есть несколько практических вопросов:

При переподписи приложения на лету через бесплатный аккаунт Apple ID меняется Bundle ID (добавляется суффикс команды). Из-за этого могут отвалиться пуши или Sign in with Apple, если они завязаны на конкретный идентификатор.

Зависимость от сторонней утилиты MobAI. Сам CLI builder распространяется под свободной лицензией MIT и написан прозрачно. Однако часть функционала (установка на девайс, симуляторы) опирается на проприетарное приложение MobAI, где часть возможностей платная.

Лимиты GitHub Actions. Если вы работаете в активной фазе верстки нативного UI без фреймворков, бесплатные минуты на раннерах закончатся быстро.

Стоит ли пробовать

Если вы пишете на Flutter или React Native под Windows/Linux и вам изредка нужно проверить приложение на живом айфоне или собрать тестовую сборку для заказчика, ios-builder сэкономит много времени и нервов. Он избавляет от необходимости вручную писать YAML-файлы для GitHub Actions и настраивать скачивание артефактов.

Для крупных проектов с жесткими требованиями к безопасности сертификатов и сложным CI/CD пайплайном всё равно понадобится выделенный Mac. Но для инди-разработчиков и небольших команд это удобный обходной путь.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.