Ratgeber

Warum ein iOS-Coding-Agent einen echten Mac braucht

Ein Agent kann überall Swift schreiben. Bauen, starten und sehen kann er eine iOS-App nur auf einem Mac. Genau diese Lücke ist der Grund, warum iOS-Arbeit einen Mac in der Schleife braucht. Sie ist auch der Grund, warum ein Agent mit Mac so viel besser wird. Er kann seine eigene Arbeit prüfen. Diese Seite listet auf, was nur unter macOS geht. Dann zeigt sie die Schleife, die wir für Agents auf unseren Maschinen einrichten.

Was nur unter macOS passiert

  • Die App bauen. xcodebuild und Xcode gibt es nur unter macOS. Eine Linux-Kiste kann Swift-Pakete und Swift auf dem Server kompilieren. Eine iOS-App erzeugen kann sie nicht.
  • Sie starten. Der iOS-Simulator ist Teil von Xcode. Ohne Simulator gibt es keinen Weg, die gerade geänderte App zu starten.
  • Sie sehen. Ein Screenshot der laufenden App zeigt dem Agent, dass das Layout kaputt ist. Dafür braucht es den Simulator.
  • UI-Tests. XCUITest steuert die App auf einem Simulator oder Gerät. Nur unter macOS.
  • Signieren und hochladen. Codesignierung, Provisioning-Profile und Uploads zu App Store Connect laufen alle über Apples Tools unter macOS.

Ein Agent unter Linux kann also Ihre Swift-Dateien bearbeiten und raten. Ein Agent auf einem Mac kann bearbeiten, bauen, starten, hinschauen und korrigieren. Nützlich ist der zweite.

Die Schleife, Schritt für Schritt

Richten Sie das einmal ein. Schreiben Sie die Befehle in die Anweisungsdatei Ihres Agents, damit er sie nutzt, ohne dass Sie es jedes Mal sagen. Suchen Sie zuerst einen Simulator und booten Sie ihn.

xcrun simctl list devices available
xcrun simctl boot "iPhone 16"

Bauen Sie für diesen Simulator. Ersetzen Sie das Scheme durch Ihres.

xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  -derivedDataPath build \
  build

Installieren und starten Sie den Build.

xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app
xcrun simctl launch booted com.example.MyApp

Machen Sie einen Screenshot, den der Agent lesen kann.

xcrun simctl io booted screenshot /tmp/screen.png

Claude Code und Codex können beide eine Bilddatei öffnen. Sagen Sie dem Agent, er soll nach jeder UI-Änderung einen Screenshot machen und beschreiben, was er sieht, bevor er die Arbeit für fertig erklärt. Diese eine Anweisung fängt die meisten Layoutfehler ab.

Die Tests genauso ausführen

xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  -derivedDataPath build \
  test

Der Pfad für Derived Data ist wichtig. Liegt er im Projektordner, ist der zweite Build inkrementell und dauert Sekunden statt Minuten. Ein Agent, der pro Build vier Minuten wartet, schafft ein Viertel der Arbeit.

Die Schleife in die Anweisungsdatei schreiben

Beide Agents lesen Projektanweisungen aus einer Datei im Wurzelverzeichnis des Repositorys. Claude Code liest CLAUDE.md, Codex liest AGENTS.md. Schreiben Sie die Schleife dort hinein, damit jede Sitzung mit ihr beginnt.

## Building and checking this app
- Build: xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16' -derivedDataPath build build
- Run: xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app && xcrun simctl launch booted com.example.MyApp
- Look: xcrun simctl io booted screenshot /tmp/screen.png, then open the image
- After any UI change, build, run, and look before saying it is done.
- Tests: same xcodebuild command with test instead of build.

Woran Agents scheitern

  • Xcode nicht ausgewählt. Nach der Installation eines neuen Xcode richten Sie xcode-select darauf aus. Sonst nutzt xcodebuild das alte.
  • Simulator nicht gebootet. Der Startbefehl scheitert mit einer vagen Fehlermeldung. Booten Sie ihn zuerst und lassen Sie ihn laufen.
  • Runtime nicht installiert. Ein frisches Xcode hat keine iOS-Runtime, bis Sie eine herunterladen. Der Download ist mehrere Gigabyte groß und muss erledigt sein, bevor der Agent startet.
  • Keine Anmeldesitzung. Der Simulator ist eine Anwendung mit grafischer Oberfläche. Auf einer Maschine ohne Bildschirm, an der niemand angemeldet ist, startet er nicht. Der Benutzer des Agents braucht eine aktive Desktop-Sitzung. Deshalb ist die automatische Anmeldung auf einem unbeaufsichtigten Mac wichtig.

Was wir für Sie einrichten

Auf einem Agent-Mac von uns ist Xcode installiert und eine iOS-Runtime heruntergeladen. Der Agent-Benutzer hat eine dauerhaft aktive Desktop-Sitzung. Claude Code und Codex warten auf Ihre Anmeldung. Ergänzen Sie die Schleife von oben in Ihrer Anweisungsdatei. Dann kann der Agent Ihre App ab der ersten Aufgabe bauen und sehen. Der Leitfaden zu den Möglichkeiten zeigt, was auf der Maschine sonst noch funktioniert und was nicht.

Häufige Fragen

Kann Claude Code eine iOS-App unter Linux bauen?

+

Nein. Unter Linux kann es Swift-Dateien bearbeiten und Swift-Pakete kompilieren, die nicht von Apple-Frameworks abhängen. Für den Build einer iOS-App braucht es Xcode, und Xcode läuft nur unter macOS.

Braucht der Agent ein physisches iPhone?

+

Für die meiste Arbeit nicht. Der Simulator deckt Bauen, Starten, Screenshots und UI-Tests ab. Ein Gerät brauchen Sie etwa für Kamera, Push-Benachrichtigungen und die Performance auf echter Hardware.

Kann der Agent Screenshots vom Simulator machen?

+

Ja, mit dem Befehl simctl screenshot. Voraussetzung ist ein gebooteter Simulator und eine Desktop-Sitzung für den Benutzer des Agents. Der Agent kann das Bild dann öffnen und lesen.

Welche Xcode-Version nutzt der Agent?

+

Die, auf die xcode-select zeigt. Legen Sie sie in Ihrer Anweisungsdatei fest. Auf einer Maschine mit mehreren Versionen sagen Sie dem Agent, dass er vor dem Build nachsehen soll.

Passende Ratgeber