12k
All articles

So erstellen Sie eine iOS-App ohne Mac

Erstellen und veröffentlichen Sie iOS-Apps ohne Mac mit Expo EAS, einem gemieteten Cloud-Mac oder CI. Vergleichen Sie Kosten, Signierung und iPhone-Tests.

OpenReplay Team
OpenReplay Team
So erstellen Sie eine iOS-App ohne Mac

Sie können eine iOS-App schreiben, bauen, signieren und veröffentlichen, ohne einen Mac zu besitzen. Allerdings leiht sich jeder funktionierende Weg macOS von jemand anderem: von den Build-Servern von Expo, einem gemieteten Mac oder einem CI-Runner.

Wenn Sie unter Windows oder Linux arbeiten, haben Sie vermutlich eine funktionierende React-Native- oder Capacitor-App, ein iPhone auf dem Schreibtisch und eine Getting-Started-Anleitung, die Sie auffordert, Xcode zu öffnen. Nur lässt sich Xcode auf Ihrem Rechner nicht installieren.

Dieser Artikel stellt die legitimen Wege vor, dieses Problem zu umgehen, zeigt, was jeder davon kostet, und erklärt, wie Sie Ihre App nach dem Build testen. Das Bauen in der Cloud ist dabei der einfache Teil. Das Testen ohne Mac ist schwieriger.

Das Wichtigste in Kürze

  • Xcode, codesign und der iOS-Simulator laufen ausschließlich unter macOS. Deshalb läuft der Build bei jedem Weg ohne eigenen Mac auf dem Mac eines anderen.
  • Bei Expo- und React-Native-Projekten kompiliert und signiert eas build --platform ios die App auf den Servern von Expo, und eas submit --platform ios lädt sie von Windows oder Linux aus zu App Store Connect hoch.
  • Das Apple Developer Program kostet unabhängig vom gewählten Weg 99 US-Dollar pro Jahr, da sowohl die App-Store-Signierung als auch die Verteilung über TestFlight eine Mitgliedschaft voraussetzen.
  • Der iOS-Simulator ist eine macOS-App. Ohne eigenen Mac testen Sie daher auf einem physischen iPhone, entweder mit einem internen EAS-Build oder über TestFlight.
  • Die Installation von macOS auf Nicht-Apple-Hardware, ob als Hackintosh oder in einer VM, verstößt gegen die Lizenzbedingungen von Apple.

Warum benötigt Apples Build-Toolchain macOS?

Xcode, xcodebuild, das Tool codesign und der iOS-Simulator laufen ausschließlich unter macOS. Es geht also nur darum, wessen Mac die Arbeit erledigt, denn um einen Mac kommen Sie nicht herum. Das Kompilieren von nativem iOS-Code, das Signieren des Binaries mit Ihrem Distributionszertifikat und das Paketieren für App Store Connect finden allesamt innerhalb von Apples Toolchain statt. Jeder der folgenden Wege umgeht diese Einschränkung, aber keiner hebt sie auf.

iOS-App ohne Mac mit Expo EAS bauen

Bei einem React-Native- oder Expo-Projekt kompiliert und signiert eas build --platform ios die App auf den Servern von Expo. Sobald Sie sich mit Ihrem Konto für das Apple Developer Program anmelden, kann die EAS CLI außerdem das Distributionszertifikat und das Provisioning Profile für Sie erzeugen. Für die meisten Leser dieses Artikels ist dies der richtige Weg.

Wenn Sie neu bei Expo sind, beginnen Sie mit Getting Started with Expo. Der vollständige Ablauf aus Expos Anleitung zur Build-Einrichtung sieht so aus:

# Create a project if you don't have one
npx create-expo-app@latest my-app
cd my-app

# Install the EAS CLI and sign in to your Expo account
npm install --global eas-cli
eas login
eas whoami            # confirms which account you're signed in as

# Generate the build configuration for the project
eas build:configure

# Build a signed iOS binary on Expo's servers
eas build --platform ios --message "First App Store build"

# Check build status and logs later
eas build:list

Wenn Sie auf die globale Installation verzichten möchten, verwenden Sie überall dort, wo in der Dokumentation eas steht, stattdessen npx eas-cli@latest. Beim Start des Builds fragt die CLI, ob sie Ihre iOS-Credentials verwalten soll. Wenn Sie zustimmen und sich bei Ihrem Apple-Konto anmelden, müssen Sie weder die Schlüsselbundverwaltung noch ein Zertifikatsportal öffnen.

EAS Build funktioniert sofort mit Expo- und React-Native-Apps, auch mit solchen, die Sie mit react-native oder ignite-cli erstellt haben. Laut Expo funktioniert es auch mit anderen nativen Projekten. Für Capacitor gibt es keine offizielle EAS-Anleitung, weshalb Capacitor-Teams in der Regel einen der folgenden Wege nutzen.

Für die Veröffentlichung ist nur ein weiterer Befehl nötig:

eas submit --platform ios

EAS Submit läuft unter Windows, Linux oder macOS. Es überträgt Ihren Build an App Store Connect, und sobald Apple den Upload verarbeitet hat, finden Sie den Build in TestFlight. Für diesen Schritt benötigen Sie ein kostenpflichtiges Apple-Developer-Konto. Die Anmeldung erfolgt entweder mit einem App Store Connect API Key oder mit Ihrer Apple-ID und einem app-spezifischen Passwort.

Einen Cloud-Mac mieten, wenn Sie Xcode benötigen

Ein gemieteter Cloud-Mac stellt Ihnen einen vollständigen macOS-Desktop über eine Remote-Verbindung bereit. Nutzen Sie ihn, wenn Sie Xcode selbst benötigen: für die Arbeit an nativen Modulen, für Debugging auf Xcode-Ebene oder für ein Capacitor-Projekt ohne verwalteten Build-Pfad. Anbieter wie MacStadium und MacinCloud vermieten solche Maschinen. Sie erhalten volle Kontrolle, übernehmen damit aber auch die Administration. Sie installieren und aktualisieren Xcode, verwalten Zertifikate und Profile und schreiben Ihre eigenen Build-Skripte.

CI mit macOS-Runnern verwenden

Gehostete CI mit macOS-Runnern eignet sich für Teams, die ihre Builds bereits skripten. GitHub Actions bietet neben Linux- und Windows-Runnern auch gehostete macOS-Runner an, und andere CI-Anbieter stellen vergleichbare macOS-Maschinen bereit. Der Runner übernimmt den Build, das Signieren bleibt jedoch Ihre Aufgabe. Sie hinterlegen Zertifikate und Profile als Secrets und binden sie selbst in die Pipeline ein. Wenn Sie Expo verwenden, können Sie auch EAS-Builds aus der CI heraus anstoßen und die verwaltete Signierung von Expo beibehalten.

Wege, die Sie meiden sollten: Hackintosh und macOS-VMs

Der Betrieb von macOS auf Nicht-Apple-Hardware, ob als Hackintosh oder in einer virtuellen Maschine auf einem Windows- oder Linux-PC, verstößt gegen die Lizenzbedingungen von Apple. Der Softwarelizenzvertrag für macOS Tahoe untersagt die Installation und Ausführung von macOS auf jedem Computer, der nicht von Apple stammt. Virtuelle macOS-Maschinen sind nur auf einem Mac erlaubt, auf dem bereits macOS läuft. Verzichten Sie auf beide Wege.

Wie testen Sie eine iOS-App ohne Mac?

Ohne eigenen Mac testen Sie eine iOS-App auf einem physischen iPhone, entweder über einen EAS-Development- bzw. internen Build oder über TestFlight, denn der iOS-Simulator ist eine macOS-App. Das Bauen lässt sich vollständig in die Cloud verlagern. Beim Testen macht sich das Fehlen eines Macs dagegen tatsächlich bemerkbar.

Für die tägliche Arbeit fügen Sie den Development Client hinzu und bauen für die interne Verteilung:

npx expo install expo-dev-client

Bei der internen Verteilung verwendet EAS Ad-hoc-Provisioning. Das Profil enthält die UDIDs (eindeutige Gerätekennungen) der freigegebenen Geräte, und ein Gerät kann den Build nur installieren, wenn es zum Zeitpunkt der Build-Erstellung bereits auf dieser Liste stand. Ihr iPhone registrieren Sie mit diesem Befehl:

eas device:create

Erstellen Sie nach der Registrierung eines Geräts einen neuen Build. Builds, die vor der Registrierung erstellt wurden, lassen sich auf dem Gerät nicht installieren. Diese Geräte-Builds werden mit einem Distributionszertifikat und einem Ad-hoc-Profil signiert, die beide ein kostenpflichtiges Konto im Apple Developer Program voraussetzen.

Für umfassendere Tests kann TestFlight bis zu 10.000 externe Tester pro App aufnehmen. Sie laden sie per E-Mail ein oder teilen einen öffentlichen Link. Zuvor muss der Build allerdings das TestFlight App Review bestehen.

Eine Lücke bleibt bestehen: Natives Debugging mit Xcode und der iOS-Simulator erfordern weiterhin macOS. Wenn Sie an diesen Punkt kommen, mieten Sie für die Sitzung einen Cloud-Mac.

Was kostet das, und welchen Weg sollten Sie wählen?

Das Apple Developer Program kostet 99 US-Dollar pro Jahr, und in vielen Regionen rechnet Apple in Ihrer Landeswährung ab. Diese Gebühr fällt bei jedem Weg ohne eigenen Mac an, da die App-Store-Signierung und die Verteilung über TestFlight unabhängig vom Ort des Builds eine Mitgliedschaft voraussetzen.

WegWer betreibt macOSWas Sie verwaltenZusätzliche Kosten
Expo EASExpoApp-KonfigurationKostenloser Plan verfügbar; siehe EAS-Preise
Cloud-MacVermieterXcode, Zertifikate, SkripteJe nach Anbieter
macOS-CI-RunnerCI-AnbieterPipeline, Signing-SecretsJe nach Anbieter

Der Free-Plan von EAS bietet ein kleines monatliches Kontingent an iOS-Builds in einer langsameren Warteschlange. Mit kostenpflichtigen Plänen gelangen Sie in die schnellere Warteschlange, können längere Builds ausführen und gegen Aufpreis mehr Builds parallel laufen lassen.

Für den typischen Fall einer React-Native- oder Expo-App, die unter Windows oder Linux entwickelt wird, empfiehlt sich Expo in Kombination mit einem physischen iPhone. Zahlen Sie die Mitgliedsgebühr von 99 US-Dollar, bauen und signieren Sie mit EAS, testen Sie mit internen Builds und TestFlight, und mieten Sie einen Mac nur dann, wenn Sie Xcode selbst benötigen.

Ohne eigenen Mac mieten Sie Apples Toolchain, statt die Hardware zu kaufen. Bauen und Veröffentlichen funktionieren auch remote problemlos. Worauf Sie verzichten, sind der Simulator und natives Debugging. Ihr nächster Schritt: Treten Sie dem Apple Developer Program bei, führen Sie eas build:configure in Ihrem Projekt aus und registrieren Sie Ihr iPhone vor Ihrem ersten internen Build mit eas device:create.

FAQs

Kann ich meine App ohne Mac und ohne kostenpflichtiges Apple-Konto auf einem iPhone ausführen?

Ja, für Prototypen über Expo Go. Installieren Sie Expo Go aus dem App Store, starten Sie Ihr Expo-Projekt unter Windows oder Linux und scannen Sie den QR-Code mit der iPhone-Kamera. Die Expo-SDK-Version Ihres Projekts muss mit der Version von Expo Go im App Store übereinstimmen. Expo Go enthält einen festen Satz nativer Bibliotheken, daher funktionieren Bibliotheken mit anderem nativem Code darin nicht. Remote-Push-Benachrichtigungen, Universal Links sowie ein eigener App-Name und ein eigenes App-Icon erfordern einen Development Build, und dessen Installation auf einem iPhone ohne Mac setzt das kostenpflichtige Programm voraus.

Wie viele iPhones können einen internen EAS-Build installieren?

Bis zu 100 iPhones pro Mitgliedschaftsjahr. Ad-hoc-Builds lassen sich nur auf Geräten installieren, die in Ihrem Apple-Developer-Konto registriert sind, und Apple zählt jede Produktfamilie separat, sodass sowohl 100 iPhones als auch 100 iPads zulässig sind. Das Deaktivieren eines Geräts gibt dessen Platz nicht frei. Geräte entfernen und das Kontingent wieder auf 100 zurücksetzen können Sie erst zu Beginn eines neuen Mitgliedschaftsjahres. Für größere Gruppen nutzen Sie TestFlight, das keine Geräteregistrierung erfordert.

Benötige ich für jede Codeänderung einen neuen iOS-Build?

Nein. EAS Update überträgt Änderungen an JavaScript, Styling und Bildern Over-the-Air an Builds, die die Bibliothek expo-updates enthalten, und die Nutzer erhalten die neue Version beim nächsten Start der App. Native Änderungen, etwa das Hinzufügen einer Bibliothek mit Swift- oder Objective-C-Code, erfordern weiterhin einen neuen EAS-Build und bei Store-Apps eine neue Einreichung im App Store. Der Build, der expo-updates erstmals hinzufügt, muss selbst ein neuer Build sein.

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.