>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Go

iOS-Entwicklung ohne MacBook mit dem Builder-Tool

Wer versucht hat, mobile Apps in Flutter oder React Native unter Linux oder Windows zu entwickeln, stößt unweigerlich an Apples Hardware-Mauer. Der Build für Android dauert lokal ein paar Minuten, aber iOS erfordert immer einen Mac mit installiertem Xcode. Einen Mac Mini nur für den wöchentlichen Build eines Test-Artifacts zu kaufen, erscheint fragwürdig – besonders für Hobbyprojekte oder kleine Teams.

Kürzlich bin ich auf das ios-Builder-Repository vom MobAI-Team gestoßen. Es ist ein kleines Go-Tool, das die Routine übernimmt: löst einen Build in GitHub Actions in der Cloud aus, lädt die fertige IPA-Datei herunter und verbindet den lokalen Entwicklungsprozess mit einem echten iPhone.

Builder Demo

So funktioniert es unter der Haube

Die Idee ist offensichtlich, aber hier haben sie daraus ein fertiges CLI-Tool gemacht. Anstatt komplexe Pipelines manuell zu konfigurieren, installierst du das builder-Tool, das eine Workflow-Datei für GitHub Actions generiert.

Der Workflow sieht folgendermaßen aus:

  1. Du führst den Build-Befehl im Terminal aus.
  2. Die CLI pusht den Code in dein Repository und startet einen GitHub-Actions-Runner auf macOS.
  3. Xcode kompiliert das Projekt in der Cloud und erstellt das Artifact-Paket.
  4. Das Tool lädt die fertige IPA in den lokalen ./dist/-Ordner herunter.

Das bedeutet, du brauchst keinen Mac zu kaufen – du nutzt die kostenlosen CI-Minuten von GitHub. Allerdings haben kostenlose Konten einen x10-Multiplikator für macOS. Von 20.000 kostenlosen Minuten pro Monat auf Mac-Runnern bleiben dir also etwa 2.000 Minuten übrig. Das sind roughly 15-20 Builds. Das reicht locker für Releases und periodisches Testen, aber du wirst nicht jeden Commit im CI laufen lassen können.

Was das Tool kann

Das Tool ist darauf ausgelegt, mit beliebten plattformübergreifenden Stacks und nativen Projekten zu arbeiten.

  • Automatische Projektstrukturerkennung. Das Tool erkennt Flutter, Plain React Native, exportiertes Expo, Cordova/Ionic und native Swift-Projekte.
  • Code-Signing-Verwaltung. Du kannst Zertifikate und Provisioning-Profile direkt über den builder signing setup-Befehl in GitHub Secrets hochladen.
  • Hot Reload. Der nützlichste Teil für alle, die in Flutter oder React Native entwickeln.
  • Ausführung auf einem Remote-Simulator. Über den MobAI-Dienst kannst du die gebaute App direkt aus dem Browser oder Desktop-Client in einem Simulator testen, wobei diese Option ein Pro-Abonnement erfordert.

Einrichtung und erster Start

Die Installation ist unkompliziert. Unter Windows kannst du eine fertige Binary von der Releases-Seite herunterladen, und unter Linux, WSL oder macOS führst du den Befehl im Terminal aus:

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

Oder baue aus dem Quellcode, falls du bereits Go auf deiner Maschine hast:

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

Nach der Installation musst du dich bei GitHub autorisieren und das Projekt im Repository-Root initialisieren:

builder auth github
cd your-ios-project
builder init

Der builder init-Befehl im interaktiven Modus erstellt eine Konfigurationsdatei .github/workflows/ios-build.yml und ein lokales builder.json.

Beispielinhalt von 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
    }
  }
}

Ein Build wird mit einer einzigen Zeile gestartet:

builder ios build

Falls Apple-Developer-Zertifikate noch nicht eingerichtet sind, kannst du einen unsignierten Build mit dem --unsigned-Flag erstellen.

Entwicklung mit Hot Reload ohne macOS

Eine IPA-Datei zu bauen ist nur die halbe Miete. Der eigentliche Schmerz beginnt, wenn du schnell UI und Logik korrigieren musst. Das Projekt in der CI für jede Button-Änderung neu zu bauen, ist sinnlos, weil der Build mehrere Minuten dauert.

Die Entwickler haben dieses Problem gelöst, indem sie ihren MobAI-App integriert haben, die ein physisches iPhone über USB mit deinem Computer verbindet.

Der Flutter-Workflow sieht folgendermaßen aus:

  1. Du verbindest dein iPhone mit deinem Windows- oder Linux-PC über Kabel.
  2. Du baust die Basis-IPA durch builder ios build und installierst sie auf dem Gerät.
  3. Du startest den Entwicklungsmodus:
builder dev flutter

Das Tool startet einen File-Watcher im lib/-Verzeichnis. Wenn du Dart-Code änderst und die Datei speicherst, sendet builder ein Hot-Reload-Signal über flutter attach. Generierte Dateien wie .freezed.dart und .g.dart werden ignoriert, um unnötige Reloads zu vermeiden.

Du musst die gesamte App nur dann über die Cloud neu bauen, wenn du nativen Code anfasst: Änderungen an Podfile, Hinzufügen von Plugins mit komplexen nativen Abhängigkeiten oder Bearbeiten von Swift-Dateien.

Für React Native ist der Prozess praktisch identisch:

builder dev rn

Der Befehl startet einen lokalen Metro-Server, leitet den richtigen Port weiter und verbindet den Bundler mit der App, die auf dem Telefon läuft. Wenn du innerhalb von WSL2 arbeitest, musst du externe Verbindungen in den MobAI-Einstellungen erlauben und die Netzwerkadresse des Host-Windows-Rechners angeben.

Fallstricke

Das Tool sieht attraktiv aus, aber es gibt mehrere praktische Fragen dazu:

Bei der Neusignierung der App on the fly über ein kostenloses Apple-ID-Konto ändert sich die Bundle-ID (ein Team-Suffix wird hinzugefügt). Dies kann Push-Benachrichtigungen oder Sign in with Apple unterbrechen, wenn diese an eine bestimmte Kennung gebunden sind.

Abhängigkeit vom Drittanbieter-Tool MobAI. Die CLI builder selbst wird unter der kostenlosen MIT-Lizenz vertrieben und ist transparent geschrieben. Allerdings basiert ein Teil der Funktionalität (Installation auf Geräten, Simulatoren) auf der proprietären MobAI-App, wobei einige Funktionen kostenpflichtig sind.

GitHub-Actions-Limits. Wenn du dich in einer aktiven Phase der nativen UI-Layoutierung ohne Frameworks befindest, sind die kostenlosen Minuten auf Runnern schnell aufgebraucht.

Lohnt es sich?

Wenn du in Flutter oder React Native auf Windows/Linux entwickelst und gelegentlich die App auf einem echten iPhone testen oder eine Testversion für einen Kunden bauen musst, spart ios-builder viel Zeit und Nerven. Es eliminiert die Notwendigkeit, YAML-Dateien für GitHub Actions manuell zu schreiben und Artifact-Downloads zu konfigurieren.

Für große Projekte mit strengen Zertifikatsicherheitsanforderungen und komplexen CI/CD-Pipelines wirst du trotzdem einen dedizierten Mac benötigen. Aber für Indie-Entwickler und kleine Teams ist es ein praktischer Workaround.

Ähnliche Projekte