← Zurück zur Startseite

Tutorial — xcodex

Schritt-für-Schritt-Anleitung für iOS-, iPadOS- und macOS-Entwickler.

1. Was ist xcodex?

xcodex ist ein terminalbasiertes CLI-Tool für Apple-Entwickler. Es fasst die wichtigsten Xcode-Workflows in einer einzigen, tastaturgesteuerten Oberfläche zusammen — ohne Flags auswendig zu lernen, ohne Kontextwechsel, ohne Xcode öffnen zu müssen.

Das Tool unterstützt iOS-, iPadOS- und macOS-Projekte und deckt den gesamten Entwicklungsalltag ab: Build, Tests, Simulatorsteuerung, Geräteverwaltung, Archive, TestFlight/App-Store-Auslieferung, Lokalisierung, Code Coverage, Crash-Analyse und Projektpflege.

Hinweis: xcodex steht in keiner Verbindung zu Apple Inc. oder Xcode. Es ist ein eigenständiges Open-Source-Werkzeug und kein offizielles Apple-Produkt.

Tutorial als PDF

Dieses Tutorial als PDF in der aktuell ausgewählten Sprache herunterladen — zum Offline-Lesen, Drucken oder Archivieren.

Tutorial als PDF speichern

xcodex herunterladen

Das notarisierte xcodex.pkg Installationspaket kannst du direkt herunterladen. Öffne das Paket, führe die Installation durch — xcodex liegt danach unter /usr/local/bin/xcodex. Setz einen Shell-Alias und starte xcodex direkt.

xcodex.pkg herunterladen

2. Voraussetzungen

VoraussetzungHinweisDownload
Xcode ~30 GB, einmal öffnen zum Einrichten der Komponenten App Store ↗
developer.apple.com ↗
Xcode Command Line Tools Enthält Git, xcodebuild, clang, make, svn Download ↗
xcode-select --install
Homebrew (optional)Für CocoaPods und weitere Toolsbrew.sh ↗
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
CocoaPods (optional)Nur wenn das Projekt CocoaPods nutztbrew install cocoapods
Carthage (optional)Nur wenn das Projekt Carthage nutztbrew install carthage
xcbeautify (optional)Für lesbare Build-Ausgabenbrew install xcbeautify
xcodes CLI (optional)Für die Verwaltung von Xcode Versionengithub.com/XcodesOrg/xcodes ↗
brew install xcodesorg/made/xcodes

3. Installation

Es gibt zwei Möglichkeiten, xcodex zu installieren:

  • Git-Repository — vollständiger Quellcode, Updates einfach per git pull
  • Installationspaket — notarisierte xcodex.pkg direkt herunterladen und per Installer einrichten

1) Git-Repository

1.1) Repository klonen

Dieser Befehl lädt den gesamten Quellcode von xcodex auf deinen Mac herunter. Git erstellt dabei das Verzeichnis ~/Developer/xcodex mit allen Dateien. Du benötigst Git, um Updates später einfach per git pull einzuspielen, ohne das Tool erneut manuell herunterzuladen.

git clone https://github.com/drapatzc/xcodex.git ~/Developer/xcodex

1.2) Ausführungsrechte setzen

macOS erlaubt standardmäßig nicht das direkte Ausführen von heruntergeladenen Dateien. Mit chmod +x gibst du dem Betriebssystem die Erlaubnis, die Datei xcodex als Programm zu starten. Dieser Schritt muss nur einmalig nach dem Klonen durchgeführt werden.

chmod +x ~/Developer/xcodex/xcodex

1.3) Shell-Alias einrichten (empfohlen)

Ein Shell-Alias sorgt dafür, dass du xcodex aus jedem beliebigen Verzeichnis starten kannst — ohne den vollständigen Pfad eintippen zu müssen. Der Alias wird dauerhaft in der Konfigurationsdatei deiner Shell gespeichert und ist ab dem nächsten Terminal-Start automatisch verfügbar.

echo 'alias xcodex="$HOME/Developer/xcodex/xcodex"' >> ~/.zshrc
source ~/.zshrc
echo 'alias xcodex="$HOME/Developer/xcodex/xcodex"' >> ~/.bash_profile
source ~/.bash_profile
alias xcodex="$HOME/Developer/xcodex/xcodex"
funcsave xcodex
Welche Shell nutze ich? Im Terminal den Befehl echo $SHELL ausführen. Die Ausgabe zeigt den Pfad zur aktiven Shell — z. B. /bin/zsh, /bin/bash oder /usr/local/bin/fish.

1.4) Ausführen

Wechsle in das Wurzelverzeichnis deines Xcode-Projekts und starte xcodex. Beim ersten Start musst du dein Projekt oder Workspace manuell auswählen, damit das Tool alle nötigen Informationen erhält — Schema, Gerät und Konfiguration. Nur so kann xcodex deine App korrekt bauen und testen.

cd YourXcodeProject
xcodex

1.5) Aktualisieren

Mit git pull lädt Git die neuesten Änderungen aus dem Repository herunter und wendet sie auf deine lokale Kopie an. So bleibst du immer auf dem aktuellen Stand, ohne xcodex erneut klonen zu müssen.

cd ~/Developer/xcodex
git pull

2) Installationspaket

Das notarisierte xcodex.pkg Installationspaket kannst du direkt herunterladen. Apple hat die Datei geprüft und freigegeben, sodass sie den Sicherheitsanforderungen von macOS entspricht und ohne Warnmeldungen öffnet. Öffne das Paket und führe die Installation durch — xcodex wird automatisch nach /usr/local/bin/xcodex kopiert. Setz danach einen Shell-Alias und starte xcodex sofort. Updates spielst du ein, indem du die neue Version herunterlädst und das Installationspaket erneut ausführst.


4. Die Menü-Oberfläche

Die Oberfläche ist zweigeteilt: links die Befehlsgruppen, rechts die zugehörigen Aktionen. Navigation erfolgt ausschließlich per Tastatur.

Am unteren Rand befindet sich eine Hotkey-Leiste mit 9 Schnellzugriffsbefehlen. Die zugehörigen Einträge in der Befehlsliste sind mit 1 bis 9 gekennzeichnet und lassen sich direkt über die entsprechende Zifferntaste aufrufen — ohne erst zur Gruppe navigieren zu müssen.

xcodex
Menü-Oberfläche von xcodex

Split-Pane-Interface: Befehlsgruppen links, Aktionen rechts

TasteAktion
/ Innerhalb einer Spalte navigieren
/ Zwischen Gruppen und Aktionen wechseln
Aktion ausführen
HKontexthilfe zur aktuellen Aktion anzeigen
XZurück zum Menü
Shift+QProgramm beenden
19Direktzugriff auf Hotkeys in der Leiste unten
Shift+<Buchstabe>Befehlsgruppe direkt anspringen
LSprache der Oberfläche umschalten
SpaceZwischen XCode-Ansicht und Browser-Ansicht wechseln
Shift+ABrowser-Ansicht direkt im Arbeitsverzeichnis öffnen
Shift+WDirekt zur Browser-Ansicht springen

Alle Einstellungen bleiben automatisch zwischen den Sitzungen erhalten.

Hotkeys vs. Befehle: Die folgende Tabelle listet alle globalen Hotkeys. Im Gegensatz zu den Befehlen in der Aktionsliste — die teils Rückfragen stellen — führen Hotkeys Aktionen sofort ohne weitere Eingaben aus und eignen sich daher besonders für schnelle, wiederkehrende Abläufe.
HotkeyBefehlBeschreibung
1DerivedData löschenEntfernt den DerivedData-Ordner des Projekts und erzwingt einen sauberen Rebuild
2Alle Caches löschenLöscht DerivedData, Module-Cache und Package-Manager-Caches (SPM, CocoaPods, Carthage)
3Build & RunBaut die App und startet sie direkt auf dem aktiven Gerät (Simulator, physisches Gerät oder Mac)
4Quick Reset & BuildLöscht DerivedData des Projekts, baut neu und startet die App — schneller Weg bei hartnäckigen Build-Fehlern
5Xcode schließenBeendet Xcode, ohne den Terminal-Fokus zu verlieren
6Projekt in Xcode öffnenÖffnet das aktive Projekt direkt in Xcode
7Unit-Tests ausführenStartet den Unit-Test-Durchlauf mit dem konfigurierten Test-Schema
8Automatisierte TestsÖffnet das Menü für automatisierte und kombinierte Testläufe
9Projekt aktualisierenLöst ein Projekt-Update aus (z. B. Abhängigkeiten neu auflösen)

5. Erste Schritte — Projekt einrichten

Bevor du deine App auf einem Simulator oder echten Gerät bauen oder testen kannst, musst du xcodex einmal konfigurieren.

xcodex
Projekt einrichten in xcodex

Schritt-für-Schritt: Projekt auswählen, Schema, Gerät und Konfiguration festlegen

Schritt 1 — Arbeitsverzeichnis auswählen

Im Hauptmenü drückst du A. Es öffnet sich der Datei-Browser, in dem du dein Xcode-Projekt (.xcodeproj) oder Workspace (.xcworkspace) auswählst.

Mit S bestätigst du die Auswahl. Anschließend wirst du gefragt, ob der Xcode-Cache (DerivedData) gelöscht werden soll. Optional werden danach auch die Abhängigkeiten neu aufgelöst.

Schritt 2 — App-Schema festlegen

Jetzt wählst du das App-Schema aus. Das Schema bestimmt, was gebaut wird und wie die App gestartet wird.

Schritt 3 — Test-Schema oder Testplan festlegen

Falls vorhanden, kannst du ein separates Test-Schema oder einen Testplan auswählen. Das ist sinnvoll, wenn deine Tests in einem eigenen Target oder über Testpläne organisiert sind.

Schritt 4 — Zielgerät auswählen

Als Nächstes wählst du das Gerät aus, auf dem gebaut oder getestet werden soll. Verfügbare Simulatoren sowie angeschlossene physische Geräte werden automatisch aus deiner Xcode-Installation erkannt.

Schritt 5 — Build-Konfiguration wählen

  • Debug — für die tägliche Entwicklung mit Logs und Debug-Informationen
  • Release — für optimierte Builds, z. B. für den App Store

Danach ist alles eingerichtet und du kannst direkt mit Build, Tests und weiteren Funktionen in xcodex starten.

Tipp: Schema, Gerät und Konfiguration lassen sich jederzeit über S, G und K im Menü ändern, ohne das Tool neu zu starten. Alle Einstellungen werden automatisch gespeichert.

Schnell-Shortcuts im Header

Im Hauptmenü sind im Header zusätzliche Einzel-Tastenkürzel aktiv, die den Konfigurationsfluss beschleunigen:

TasteFunktion
AArbeitsverzeichnis wählen
SApp-Schema auswählen
TTest-Ziel auswählen
GZielgerät auswählen
KBuild-Konfiguration wechseln (Debug / Release)
BBundle ID anzeigen und kopieren
LSprache der Oberfläche umschalten (Deutsch / Englisch)

6. XCode-Ansicht vs. Browser-Ansicht

xcodex hat zwei Hauptansichten: die XCode-Ansicht mit allen Entwickler-Werkzeugen und die Browser-Ansicht — ein tastaturgesteuerter Datei-Browser. Kein Kontextwechsel, keine Maus, kein Fensterwechsel.

xcodex — Ansicht wechseln
Ansichtsauswahl in xcodex

Mit der Leertaste zwischen XCode-Ansicht und Browser-Ansicht wechseln

TasteAktion
LeertasteZwischen XCode-Ansicht und Browser-Ansicht wechseln
Shift+XDirekt zur XCode-Ansicht springen
Shift+WDirekt zur Browser-Ansicht springen
Shift+ABrowser-Ansicht direkt im Arbeitsverzeichnis öffnen

Die XCode-Ansicht ist der Ausgangspunkt: Hier baust du, testest, archivierst und verwaltest Simulatoren. Die Browser-Ansicht ergänzt sie als schneller Datei-Navigator — ideal zum Prüfen von Verzeichnissen, Öffnen von Dateien oder Setzen eines neuen Arbeitsverzeichnisses, ohne das Terminal zu verlassen.

Wechsel zwischen den Ansichten passiert nahtlos: Die Terminalgröße bleibt identisch, kein Springen, kein Scrollen. Mit Leertaste togglest du hin und her. Mit Shift+X und Shift+W springst du direkt in die gewünschte Ansicht — egal wo du gerade bist. Shift+A öffnet die Browser-Ansicht sofort im aktuellen Arbeitsverzeichnis des Projekts.


7. Clean & Cache

Xcode speichert alle Build-Artefakte in einem gemeinsamen DerivedData-Ordner. Wenn Builds ohne erkennbaren Grund fehlschlagen, die App sich seltsam verhält oder nach einem Refactoring Fehler erscheinen, die im Code nicht existieren — dann hilft ein gezieltes Bereinigen.

xcodex
Clean & Cache in xcodex

Clean & Cache: verschiedene Bereinigungs-Optionen auf einen Blick

AktionWas wird bereinigtWann sinnvoll
Alle Verzeichnisse anzeigenCache-Browser mit Größenanzeige und gezieltem LöschenÜberblick vor dem Löschen
Build bereinigenKompilierte Artefakte des aktuellen SchemasKleiner Reset vor einem sauberen Build
Derived Data (Projektname) löschenProjektspezifischer DerivedData-OrdnerBei unerklärlichen Build-Fehlern
Derived Data löschenGesamter DerivedData-OrdnerVollständiger Build-Cache-Reset
Verzeichnisse löschen (ohne Paketmanager)DerivedData, Xcode-Caches, Simulator-CacheSchneller Reset ohne Paketmanager anzufassen
Verzeichnisse löschen (mit Paketmanager)+ CocoaPods-, Carthage- und SPM-CacheWenn auch Paketmanager-Caches bereinigt werden sollen
Verzeichnisse löschen (Sicher)DerivedData, ModuleCache, SwiftPM, Xcode-Caches, Simulator-Cache, Logs, Diagnostic ReportsUmfassender Reset — alles was Xcode automatisch neu anlegt
Verzeichnisse löschen (Tief)Alles aus „Sicher" + Archives, iOS DeviceSupport, alle Simulator-GeräteHartnäckige Probleme; viel Speicher zurückgewinnen
Verzeichnisse löschen (Komplett)Alles aus „Tief" + CocoaPods-, Carthage- und SPM-Cache; optional Simulator-RuntimesMaximale Speicherfreigabe
Verzeichnisse löschen (Neustart)Kompletter Reset inkl. SourcePackages für einen sauberen Projekt-NeustartWenn alles neu aufgebaut werden soll
Tipp: Bei unerklärlichem Verhalten zuerst DerivedData löschen — das löst die Mehrheit aller Cache-bedingten Probleme in unter 10 Sekunden.

8. Build & Run

xcodex bietet mehrere vorkonfigurierte Build-Modi, die für häufige Entwicklungsszenarien optimiert sind.

xcodex
Build & Run Übersicht in xcodex

Build & Run: verschiedene Modi für unterschiedliche Situationen

AktionWas passiertWann sinnvoll
ÜberprüfenPrüft das Projekt auf KonfigurationsfehlerVor dem ersten Build in einem neuen Setup
Dependencies / PaketmanagerLöst SPM-, CocoaPods- und Carthage-Abhängigkeiten aufNach dem Klonen oder bei Paketfehlern
ProjektkonfigurationZeigt alle Build-Einstellungen des gewählten SchemasZur Diagnose von Konfigurationsproblemen
BauenKompiliert das Projekt ohne zu startenSchnelle Kompilierungsprüfung
Bauen & startenBaut und startet die App im Simulator oder auf macOSNormaler Entwicklungsworkflow
Bereinigen (ohne Paketmanager) & Bauen & StartenLöscht DerivedData und Xcode-Caches, baut dann neu und startetBei Build-Fehlern durch Cache-Probleme
Bereinigen (inkl. Paketmanager) & Bauen & StartenLöscht alle Caches inkl. Paketmanager-Caches, baut dann neu und startetBei hartnäckigen Problemen oder nach Paketmanager-Änderungen

Build-Ausgabe verstehen

Während des Builds zeigt xcodex jeden Schritt mit seiner Laufzeit an. Bei einem Fehler wird die Fehlermeldung rot hervorgehoben und mit der betroffenen Datei und Zeile angezeigt.

Mit der Taste + lassen sich weitere Zielgeräte hinzufügen, sodass die App parallel auf mehreren Betriebssystemen läuft. So können etwa Unterschiede zwischen iPhone und iPad oder verschiedenen iOS-Versionen direkt im Vergleich erkannt werden.

xcodex
Build-Ausgabe in xcodex

Build-Ausgabe: strukturiert, komprimiert, mit Zeitangaben pro Schritt

Isoliertes DerivedData

xcodex baut in ein eigenes DerivedData-Verzeichnis, das vollständig von Xcode getrennt ist. Beide können gleichzeitig laufen, ohne sich gegenseitig zu beeinflussen.

Tipp: Mit V Projekt validieren lässt sich vor dem Bauen prüfen, ob alle Abhängigkeiten aufgelöst sind und das Schema korrekt konfiguriert ist.

9. Abhängigkeiten

Wer CocoaPods, SPM oder Carthage nutzt, kann Abhängigkeiten direkt aus xcodex heraus verwalten — ohne Terminal-Kenntnisse.

xcodex
Abhängigkeiten in xcodex

Dependencies: SPM, CocoaPods und Carthage in einem Menü

Package ManagerBefehl
Swift Package Managerswift package resolve
CocoaPodspod install
Carthagecarthage update
Tipp: Nach einem git pull zuerst „Alle Dependencies auflösen" ausführen, bevor gebaut wird — das verhindert die häufigsten „missing module"-Fehler nach Branch-Wechseln.

10. Simulator & Physische Geräte

Je nach ausgewähltem Zielgerät zeigt xcodex entweder die Simulator-Gruppe oder die Physische-Geräte-Gruppe an — nie beide gleichzeitig. Die verfügbaren Aktionen passen sich automatisch an das aktive Gerät an.

Simulator

Simulatoren können in einen inkonsistenten Zustand geraten — besonders nach iOS-Updates oder langen Laufzeiten. Diese Gruppe gibt die Kontrolle zurück.

xcodex
Simulator-Steuerung in xcodex

Simulator: App neu installieren, zurücksetzen, alle Instanzen schließen

AktionWas passiertWann sinnvoll
Neuen Simulator erstellenRuntime und Gerätetyp wählen, Simulator via xcrun simctl create anlegenWenn ein bestimmtes Gerät/iOS-Kombination fehlt
App startenStartet die gebaute App auf dem gewählten SimulatorNach einem Build ohne erneutes Bauen
App auf ausgewähltem Simulator startenWie „App starten", aber mit vorheriger Simulator-AuswahlZum Testen auf einem anderen Gerät
App deinstallieren & frisch testenDeinstalliert die App und installiert sie neuSauberer Start ohne alten App-Zustand
Simulator neu startenFährt den Simulator herunter und startet ihn neuBei hängendem oder instabilem Simulator
Simulator stoppenFährt den laufenden Simulator herunterRessourcen freigeben
Simulator zurücksetzenSetzt den aktuellen Simulator auf Werkszustand zurückApp-Daten und Einstellungen vollständig entfernen
Simulator Status anzeigenAlle Simulatoren nach Runtime gruppiert, farbkodiert (Booted / Shutdown)Überblick über installierte Simulatoren
Simulator Inhalte zurücksetzenLöscht alle Inhalte aller Simulatoren (xcrun simctl erase all)Vollständiger Reset aller Simulator-Daten
Nicht verfügbare Simulatoren löschenEntfernt Simulatoren ohne installierte RuntimeAufräumen nach Xcode-Updates
Alle Simulatoren stoppenStoppt alle laufenden Simulatoren auf einmalRessourcen freigeben, vor einem Build
Alle Simulator-Geräte löschenEntfernt alle Simulator-Geräteeinträge (xcrun simctl delete all)Vollständiger Neustart der Simulator-Infrastruktur
Simulator-Caches löschenEntfernt temporäre CoreSimulator-CachesDarstellungsfehler oder Verhalten nach iOS-Updates

Simulator fernsteuern

Nach dem App-Start lassen sich Simulator-Einstellungen direkt aus xcodex heraus ändern — ohne den Simulator-Menübaum zu durchsuchen.

xcodex
Simulator-Controls in xcodex

Controls: Dark Mode, Berechtigungen, Statusleiste, Push Notifications

1. Interaktion

#BefehlNutzen beim Testen
01Push-Notification testenSimuliert einen APNs-Payload, ohne echten Server — ideal für Notification-UX-Tests.
02Deep Link öffnenÖffnet einen URL-Scheme direkt, ohne die App manuell zu navigieren.

2. Erscheinungsbild

#BefehlNutzen beim Testen
01Dark / Light Mode umschaltenPrüft, ob alle Assets und Colors korrekt auf beide Modi reagieren.
02Status Bar mockenSetzt definierte Werte (Uhrzeit, Signalstärke) für Screenshots und UI-Tests.
03Status Bar zurücksetzenSetzt den Status Bar-Mock zurück auf den echten Systemzustand.
04Dynamic Type setzenTestet Layout-Stabilität bei extremen Schriftgrößen.
05Bold Text umschaltenPrüft Lesbarkeit bei aktivierter Fett-Schrift-Barrierefreiheit.
06Reduce Motion umschaltenStellt sicher, dass Animationen korrekt deaktiviert werden.
07Increase Contrast umschaltenValidiert Kontrastverhältnisse für Barrierefreiheit.
08Display Zoom setzen (iPhone only)Testet Layout bei vergrößertem Display-Modus.
09Reduce Transparency umschaltenPrüft UI-Elemente mit deaktiviertem Blur-Effekt.
10On/Off-Labels umschaltenSichert, dass Toggles auch ohne Farbe erkennbar sind.
11Differentiate Without ColorTestet, ob die App nicht ausschließlich auf Farbe als Informationsträger setzt.

3. Berechtigungen

#BefehlNutzen beim Testen
01Berechtigungen setzenGranulare Steuerung einzelner Privacy-Grants.
02Alle App-Berechtigungen zurücksetzenSetzt den App-Berechtigungsstatus auf „nicht gefragt" — für Permission-Flow-Tests.
03–19Quick Grants (Kamera, Mikrofon, Standort, Fotos, Kontakte, Kalender, Erinnerungen, Bewegung, Health, Netzwerk, Bluetooth, HomeKit, Mediathek, Siri, Sprache, Lokales Netz, User-Tracking)Einzelne Berechtigung in einem Schritt erteilen — spart Dialog-Klicks bei jedem Testlauf.
20Alle Berechtigungen erteilenGesamte Berechtigungsliste auf „erlaubt" — für Schnelltests jenseits des Permission-Flows.

4. Sprache & Region

#BefehlNutzen beim Testen
01App-Sprache setzenPrüft Lokalisierung der App ohne Systemsprache zu ändern.
02Systemsprache setzenTestet globale Spracheffekte (Tastatur, Systemdialoge).
0324h-Format umschaltenValidiert Zeitdarstellung in beiden Formaten.
04Systemsprache zurücksetzenSetzt alle Spracheinstellungen auf Werksstandard zurück.

5. Laufzeit

#BefehlNutzen beim Testen
01Slow AnimationsVerlangsamt Animationen — Fehler im Übergang werden sichtbar.
02Clipped Views hervorhebenZeigt abgeschnittene UI-Elemente sofort rot markiert.
03Launch Arguments setzenInjiziert -Argument-Flags für Feature-Flags und Test-Modi ohne Build.
04Env-Variablen setzenÜbergibt Umgebungsvariablen an die App beim Start.
05Memory Pressure simulierenTestet das Verhalten der App bei Speicherdruck (Warnstufen).
06URL-Scheme testenÖffnet einen Deep Link und prüft die Verarbeitung.
07Core Data DebugAktiviert SQL-Logging für Core Data — zeigt alle Queries.
08Localization DebugAktiviert doppelte Länge / Pseudosprache — Layout-Probleme werden sofort sichtbar.
09SwiftUI DebugZeigt SwiftUI-Render-Grenzen und Invalidierungen in der Konsole.
10Background FetchLöst einen Hintergrund-Fetch manuell aus — ohne 20-Minuten-Wartezeit.
11Background LaunchStartet die App im Hintergrundmodus.
12Metal ValidationAktiviert Metal-API-Validierung für GPU-Code.

6. Gerät & System

#BefehlNutzen beim Testen
01Standort setzenSimuliert GPS-Koordinaten ohne echten Standort.
02Batteriestatus simulierenTestet Low-Battery-Warnungen und Ladestand-Logik.
03Cellular-Modus setzenSimuliert EDGE, LTE, 5G oder kein Signal.
04IDFA zurücksetzenSetzt die Advertising-ID zurück — für Tracking-Tests.
05iCloud-Sync auslösenErzwingt einen iCloud-Sync ohne Wartezeit.
06Zeitzone setzenTestet zeitzonensensitive Logik (Kalender, Countdowns).
07Status Bar Uhrzeit mockenSetzt eine feste Uhrzeit für konsistente Screenshots.
08Standortsimulation stoppenBeendet den simulierten GPS-Standort.
09WLAN-Balken setzenTestet UI bei verschiedenen WLAN-Signalstärken.
10Cellular-Balken setzenTestet UI bei verschiedenen Mobilfunk-Signalstärken.
11Netzanbieter-Name setzenSetzt einen eigenen Carrier-Namen in der Status Bar.
12Stage Manager (iPad only)Testet das Layout im Stage-Manager-Modus.
13Audio-Route setzenWechselt zwischen Lautsprecher, Kopfhörer, Bluetooth.

7. Daten

#BefehlNutzen beim Testen
01Medien hinzufügenImportiert Bilder/Videos in die Foto-Bibliothek des Simulators.
02Simulator-Keychain leerenEntfernt alle gespeicherten Keychain-Einträge der App.
03App-Datenordner öffnenÖffnet den Container direkt im Finder — für manuelles Datei-Debugging.
04App UserDefaults zurücksetzenLöscht alle gespeicherten UserDefaults-Werte der App.
05Alle App-Daten löschenEntfernt den kompletten App-Container.
06App-Group-Container öffnenÖffnet den geteilten Container im Finder.
07App-Defaults anzeigenListet alle aktuellen UserDefaults-Keys und -Werte.
08SQLite-Datenbank öffnenÖffnet die App-Datenbank direkt in einem externen Editor.
09Keychain-Einträge anzeigenListet alle gespeicherten Keychain-Einträge der App.
10Root-Zertifikat installierenInstalliert ein eigenes CA-Zertifikat für SSL-Pinning-Tests.
11App-Container messenZeigt die Größe des App-Containers auf Disk.
12App-Container exportierenExportiert den Container als Archiv für Offline-Analyse.
13UserDefaults-Key bearbeitenÄndert einzelne Keys direkt — ohne App-Neustart.

8. Logs & Diagnose

#BefehlNutzen beim Testen
01App-Logs streamenLive-Log-Ausgabe der App in der Konsole.
02Konsole filternFiltert die Systemkonsole auf relevante Subsysteme.
03Crash-Log öffnenÖffnet den letzten Crash-Report der App.
04Diagnose-Report erstellenErstellt einen vollständigen Simulator-Diagnosebericht.
05App-Version anzeigenZeigt Bundle-Version und Build-Nummer der installierten App.
06System-Logs streamenVollständige Systemkonsole des Simulators.
07Privacy Manifest validierenPrüft das PrivacyInfo.xcprivacy auf Vollständigkeit.
08SwiftData DebugAktiviert SQL-Logging für SwiftData.
09Sysdiagnose erstellenErstellt ein vollständiges System-Diagnose-Archiv.

9. Live Activities

#BefehlNutzen beim Testen
01Live Activity startenStartet eine Live Activity mit eigenem Payload.
02Live Activity aktualisierenSendet ein Update an eine laufende Live Activity.
03Live Activity beendenBeendet eine Live Activity.

10. WidgetKit

#BefehlNutzen beim Testen
01Widget-Timelines neu ladenErzwingt ein Timeline-Refresh ohne Wartezeit.
02Widget-Cache leerenLeert den internen WidgetKit-Cache.

11. App Clips

#BefehlNutzen beim Testen
01App Clip URL testenÖffnet eine App-Clip-Experience via URL.
02App-Clip-Experience zurücksetzenSetzt den gespeicherten App-Clip-Zustand zurück.
Tipp: Statusleiste auf „9:41 Uhr, voll geladen, voller Empfang" setzen, bevor App-Store-Screenshots erstellt werden — genau wie Apple es in offiziellen Präsentationen macht.
Hinweis: Der vollständige Simulator-Reset löscht alle Daten auf dem Simulator — inklusive Keychain-Einträge, Einstellungen und Test-Accounts. Vorher sicherstellen, dass keine wichtigen Test-Daten verloren gehen.

Physische Geräte

Die Gruppe steuert direkt angeschlossene iOS-Geräte über USB oder WLAN. Sie ist nur sichtbar, wenn ein physisches Gerät als Ziel ausgewählt ist.

xcodex
Physische Geräte in xcodex

Vollständige Geräteverwaltung für physische iOS-Geräte direkt im Terminal

AktionBeschreibung
Alle Geräte anzeigenListet alle verbundenen physischen Geräte mit Name, UDID und iOS-Version auf
App installierenInstalliert den zuletzt gebauten App-Bundle auf dem verbundenen Gerät (Gerät muss entsperrt und vertrauenswürdig sein)
App startenStartet die installierte App auf dem verbundenen Gerät
App beendenBeendet den App-Prozess auf dem Gerät, ohne das Gerät manuell zu bedienen
App deinstallierenEntfernt die App vollständig vom Gerät einschließlich aller lokalen Daten
Installierte Apps auflistenZeigt Bundle-Identifier und Namen aller installierten Apps auf dem Gerät
Live-Log vom GerätStreamt Konsolenausgaben des Geräts in Echtzeit — beenden mit Ctrl+C

11. Tests

xcodex trennt Unit-Tests und UI-Tests, damit der jeweils passende Durchlauf gestartet werden kann — schnelle Unit-Tests im Entwicklungsloop, UI-Tests vor Commits oder Releases.

xcodex
Tests in xcodex

Tests: Unit-Tests, UI-Tests und alle Tests auf einen Klick

TestartBeschreibung
Unit-TestsSchnell, kein Simulator-Start nötig
UI-TestsStartet die App im Simulator, führt Interaktionstests durch
Alle TestsKombinierter Durchlauf

Testergebnisse & Auswertung

Die Testergebnisse werden klar und direkt dargestellt:

  • ✅ Bestanden – Test erfolgreich ausgeführt
  • ⚠️ Übersprungen – Test wurde nicht ausgeführt
  • ❌ Fehlgeschlagen – Test ist fehlgeschlagen

Tests erweitern

Mit der Taste + kannst du Tests auf weitere Geräte ausweiten. So lässt sich das Verhalten deiner App parallel auf unterschiedlichen Simulatoren oder Geräten prüfen.

Code Coverage

Mit der Taste C öffnest du die Code-Coverage. Diese wird übersichtlich als Baumstruktur dargestellt und zeigt dir direkt, welche Dateien und Klassen durch Tests abgedeckt sind – und wo noch Lücken bestehen.

Fehlgeschlagene Tests einzeln wiederholen

xcodex
Unit-Tests und Wiederholung in xcodex

Fehlgeschlagene Tests werden rot markiert und können einzeln neu gestartet werden

Nach einem Durchlauf listet xcodex alle Ergebnisse auf. Fehlgeschlagene Tests können einzeln neu gestartet werden — ohne die gesamte Test-Suite zu wiederholen. Typischer Workflow:

  1. Alle Tests starten
  2. Fehlgeschlagene Tests identifizieren
  3. Fix implementieren
  4. Nur die betroffenen Tests erneut ausführen
  5. Bei Erfolg: vollständigen Durchlauf zur Bestätigung starten

Code Coverage

Mit der Code-Coverage-Ansicht siehst du direkt, wie gut dein Projekt durch Tests abgedeckt ist. xcodex kann Testläufe mit aktivierter Coverage starten, Ergebnisse auswerten und dir zeigen, welche Bereiche bereits gut getestet sind und wo noch Lücken bestehen. Das hilft dir, Schwachstellen früh zu erkennen, bevor sie im Review, in der CI/CD-Pipeline oder später im Release auffallen.

xcodex
Code Coverage in xcodex

Code Coverage auf Dateiebene: schnell identifizieren, wo Tests fehlen

AbdeckungBewertung
80–100 %Gut abgedeckt — kritische Pfade sind getestet
50–80 %Verbesserungspotenzial, besonders bei komplexer Logik
< 50 %Hohes Risiko bei Änderungen — Tests fehlen

Automatisierte Tests

Die Ansicht für automatisierte Tests bündelt wiederkehrende Testläufe in einem klaren Terminal-Workflow. Du kannst Unit-Tests gezielt ausführen und verschiedene Kombinationen aus Schema, Device und Konfiguration testen. Damit lassen sich typische Prüfungen vor einem Pull Request oder Release schneller wiederholen, ohne jedes Mal lange xcodebuild-Befehle zusammenzubauen.

xcodex
Automatisierte Tests in xcodex

Automatisierte Tests laufen vollständig unabhängig von Xcode

Die automatisierten Tests laufen vollständig unabhängig von Xcode — Xcode kann gleichzeitig geöffnet sein, ohne Auswirkungen auf den Test-Durchlauf. Ideal für:

  • Parallel zur Entwicklung — Tests für Feature A, während man an Feature B arbeitet
  • QA ohne Xcode-Kenntnisse — Tester können eigenständig Test-Durchläufe starten
  • Zweiter Clone — letzten Commit testen, ohne die eigene Entwicklungsumgebung zu berühren

12. Xcode-Integration

Diese Gruppe enthält Schnellzugriff-Befehle für Xcode selbst — für den Wechsel zwischen Terminal und IDE.

xcodex
Xcode-Integration in xcodex

Xcode öffnen und schließen direkt aus xcodex

AktionWas passiertWann sinnvoll
Tools & VersionenZeigt installierte Versionen von Xcode, Swift, CocoaPods, SwiftLint u.a.Schneller Überblick über die Entwicklungsumgebung
Xcode schließenBeendet XcodeVor Cache-Aktionen oder einem Xcode-Wechsel
Xcode neu startenSchließt Xcode und öffnet es danach neuBei hängendem Xcode oder nach Einstellungsänderungen
Xcode öffnenÖffnet das aktuelle Projekt in XcodeSchneller Einstieg ohne Finder
Xcode-Version wechselnWechselt die aktive Xcode-Version via xcode-selectWenn mehrere Xcodes installiert sind und gezielt eine genutzt werden soll
Xcode-Version installierenInstalliert eine neue Xcode-Version via XcodesNeue Xcode-Version parallel zur bestehenden installieren
Xcode-Version deinstallierenEntfernt eine installierte Xcode-Version via XcodesAlte Versionen löschen und Speicher freigeben
Xcode-Protokolle öffnenÖffnet ~/Library/Logs/Xcode im FinderBei unerklärlichen Fehlern oder Abstürzen in Xcode
Command Line Tools installierenStartet den macOS-Systemdialog zur CLT-InstallationNach einem macOS-Update oder auf einem neuen Mac
Xcode-Einstellungen zurücksetzenLöscht com.apple.dt.Xcode.plist nach BestätigungBei UI-Hängern oder fehlerhaften Tastaturkürzeln in Xcode
Xcode-Benutzerdaten zurücksetzenEntfernt ~/Library/Developer/Xcode/UserData/ nach Bestätigung (Keybindings, Themes, Snippets)Wenn Xcode-Anpassungen Probleme verursachen
Tipp: Vor einem Full Reset & Build zuerst Xcode schließen — das verhindert Dateisperren auf den DerivedData-Ordner.

13. App Store & Distribution

xcodex deckt den gesamten Distributionsprozess ab — vom Archivieren bis zum Upload. Das spart die manuelle Arbeit im Xcode Organizer und ermöglicht Uploads direkt aus dem Terminal.

xcodex
App Store Distribution in xcodex

App Store: Archivieren, Validieren und Hochladen in einem strukturierten Workflow

Voraussetzung: App-spezifisches Passwort

Für den Upload zu TestFlight oder App Store Connect benötigt xcodex ein App-spezifisches Passwort:

  1. Öffne appleid.apple.com
  2. Gehe zu Sicherheit → App-spezifische Passwörter
  3. Erstelle ein neues Passwort (z. B. „xcodex Upload")
  4. Das Passwort wird einmalig in den xcodex-Einstellungen hinterlegt

Typischer Release-Workflow

xcodex
App Store Auslieferung in xcodex

Release-Workflow: Validieren vor dem Upload schützt vor häufigen Einreichungsfehlern

  1. Full Reset & Build mit Release-Konfiguration
  2. Archivieren
  3. Validieren — Fehler korrigieren, falls vorhanden
  4. Zu TestFlight hochladen — für Beta-Tests
  5. Nach Freigabe: In den App Store einreichen
Hinweis: Für macOS-Apps wird das Archiv automatisch notarisiert und mit dem Notarisierungs-Ticket gestapelt (Notarize & Staple), bevor es hochgeladen wird — ein Schritt, der manuell fehleranfällig ist.

14. Verzeichnisse

Xcode verteilt seine Daten über mehrere verschachtelte Library-Pfade. xcodex öffnet die wichtigsten Ordner mit einem Tastendruck direkt im Finder.

xcodex
Verzeichnisse in xcodex

Verzeichnisse: DerivedData, Archive, Simulatoren und Provisioning Profiles auf einen Klick

AktionPfadInhalt
Finder → Schreibtisch~/DesktopDesktop-Dateien
Finder → Downloads~/DownloadsDownload-Ordner
Finder → Dokumente~/DocumentsDokumente
Finder → Projektordneraktuelles Arbeitsverzeichnis.xcworkspace / .xcodeproj und Projektdateien
Finder → DerivedData~/Library/Developer/Xcode/DerivedDataGesamtes DerivedData aller Projekte
Finder → DerivedData/<Projektname>~/Library/Developer/Xcode/DerivedData/<Projektname>-…DerivedData des aktuellen Projekts
Finder → Build Logs…/DerivedData/<Projektname>/Logs/BuildBuild-Protokolle des aktuellen Projekts
Finder → SourcePackages…/DerivedData/<Projektname>/SourcePackagesGeklonte SPM-Pakete des aktuellen Projekts
Finder → Module Cache~/Library/Developer/Xcode/DerivedData/ModuleCache.noindexVorkompilierter Modul-Cache
Finder → Xcode Caches~/Library/Caches/com.apple.dt.XcodeXcode-eigene Cache-Daten
Finder → Simulatoren~/Library/Developer/CoreSimulator/DevicesAlle Simulator-Geräte und App-Daten
Finder → Simulator Cache~/Library/Developer/CoreSimulator/CachesTemporäre Simulator-Caches
Finder → Archives~/Library/Developer/Xcode/ArchivesXcode-Archive (.xcarchive)
Finder → DiagnosticReports~/Library/Logs/DiagnosticReportsCrash- und Diagnose-Berichte des Systems
Finder → iOS Device Logs~/Library/Logs/CrashReporterCrash-Logs von angeschlossenen Geräten
Finder → Provisioning Profiles~/Library/MobileDevice/Provisioning ProfilesInstallierte Provisioning Profiles

15. Lokalisierung

Fehler in der Lokalisierung fallen oft erst zur Laufzeit auf – dann, wenn die App bereits ausgeliefert ist. xcodex prüft die .xcstrings-Datei vollständig statisch, ohne Build-Prozess und ohne Xcode. Fehlende Keys, doppelte Einträge und Inkonsistenzen zwischen Sprachen werden sofort sichtbar gemacht. So lassen sich Lokalisierungsprobleme schon während der Entwicklung erkennen und beheben, bevor sie den Nutzer erreichen.

xcodex
Lokalisierung in xcodex

Lokalisierung: fehlende Keys, doppelte Keys und Konsistenz-Prüfung

AktionWas passiertWann sinnvoll
Verfügbare Sprachen anzeigenListet alle erkannten Sprachcodes aus .lproj-Ordnern und .xcstrings-DateienÜberblick welche Sprachen im Projekt vorhanden sind
Fehlende LokalisierungenZeigt Keys, die in mindestens einer Sprache komplett fehlenVor einem Release prüfen ob alle Sprachen vollständig sind
Ungenutzte Localizable-KeysZeigt Keys, die in den Lokalisierungsdateien vorhanden, aber im Code nicht referenziert werdenAufräumen von veralteten oder vergessenen Keys
Doppelte ÜbersetzungsschlüsselFindet Keys, die mehrfach in derselben Datei vorkommenBei unerklärlichen Übersetzungsfehlern
Inkonsistente PlatzhalterErkennt Keys bei denen sich die Platzhalter (%@, %d u.a.) zwischen Sprachen unterscheidenVerhindert Abstürze durch falsche Format-Argumente
Leere ÜbersetzungenFindet Keys mit vorhandenem, aber leerem Eintrag ("" oder nur Leerzeichen)Ergänzt die Prüfung auf fehlende Keys — leere Werte werden sonst übersehen
ÜbersetzungsstatistikZeigt den Übersetzungsgrad pro Sprache als Fortschrittsbalken aus .xcstrings-DateienSchneller Überblick wie vollständig jede Sprache übersetzt ist
Schlüssel / Wert suchenInteraktive Suche in .xcstrings nach Key-Name oder ÜbersetzungswertEinen bestimmten Text oder Key schnell finden
XLIFF exportierenFührt xcodebuild -exportLocalizations aus und legt ein .xcloc-Paket auf dem Desktop abÜbersetzungspakete für externe Übersetzer erstellen
Hinweis: xcodex prüft die .xcstrings-Datei direkt — keine Abhängigkeit von Xcode oder einem Build-Prozess.

16. Programme

Die Befehlsgruppe „Programme" ermöglicht es, häufig verwendete macOS-Apps direkt aus der Toolbox heraus zu öffnen — ohne Dock, Spotlight oder Finder. Nur tatsächlich installierte Apps erscheinen in der Liste. Apps werden über ihren vollständigen Pfad gestartet, was auf macOS 26+ zuverlässiger ist als der open -a-Befehl.

Programme
Programme in xcodex

Häufig verwendete macOS-Apps direkt aus der Toolbox öffnen

AppGruppeZweck
XcodesApple EntwicklertoolsXcode-Versionen verwalten, installieren und wechseln
DeveloperApple EntwicklertoolsApple Developer Portal und Dokumentation
App StoreApple EntwicklertoolsApp Store öffnen
TestFlightApple EntwicklertoolsBeta-Apps verwalten und testen
SafariApple EntwicklertoolsWebbrowser für Dokumentation und Recherche
TerminalSystemwerkzeugeKommandozeile
KonsoleSystemwerkzeugeSystemlogs und Diagnosemeldungen lesen
AktivitätsanzeigeSystemwerkzeugeCPU-, Speicher- und Prozessauslastung überwachen
SystemeinstellungenSystemwerkzeugemacOS-Einstellungen
PasswörterSystemwerkzeugemacOS-Passwörter und Keychain verwalten
SF-SymboleSystemwerkzeugeApple SF Symbols durchsuchen und kopieren
ForkDrittanbieterGit-Client
InsomniaDrittanbieterREST- und API-Tests
CyberduckDrittanbieterFTP/SFTP/S3-Dateiübertragung
DevCleanerDrittanbieterXcode-Caches und Entwicklerdaten bereinigen
Nicht installierte Apps werden ausgeblendet. Die Liste passt sich automatisch an die vorhandene Software an.

17. Verschiedenes

Unter Verschiedenes sind Funktionen gebündelt, die seltener im täglichen Workflow vorkommen, aber im richtigen Moment entscheidend sein können. Dazu gehören die Analyse von Crash Reports, das Starten von Instruments-Sessions und die Verwaltung von Provisioning Profiles. Gerade bei schwer reproduzierbaren Abstürzen oder Build-Problemen kurz vor einem Release sind diese Werkzeuge unverzichtbar – und direkt aus xcodex heraus erreichbar.

xcodex
Verschiedenes in xcodex

Crash Reports, Instruments und Provisioning Profiles

  • Crash Reports analysieren — symbolisiert .crash-Dateien und zeigt lesbare Stack Traces. Erfordert das passende .dSYM-Archiv
  • Instruments (Beta) — startet Profiling-Sessions direkt aus xcodex heraus
  • Provisioning Profiles verwalten — listet alle lokalen Profile auf und erlaubt die Bereinigung abgelaufener Profile

Provisioning Profiles im Überblick

Diese Ansicht zeigt dir alle lokal verfügbaren Provisioning Profiles auf einen Blick. Du erkennst sofort, welche gültig sind, zu welcher App sie gehören und wo es Probleme gibt. So findest du schnell die Ursache, wenn Builds lokal nicht laufen – ohne dich durch Xcode klicken zu müssen.

xcodex
Provisioning Profiles in xcodex

Alle lokalen Provisioning Profiles auf einen Blick — abgelaufene direkt entfernen

SpalteInformation
NameLesbarer Profilname
App IDBundle Identifier, für den das Profil gilt
TypDevelopment, AdHoc, App Store, Enterprise
AblaufdatumWann das Profil ungültig wird
GeräteAnzahl der zugeordneten Geräte (bei Development/AdHoc)
Tipp: Vor einem Release-Build die Profilliste prüfen — ein abgelaufenes Distribution-Profil blockiert den Upload zu App Store Connect.

18. Entwicklungsumgebungen isolieren

Diese Funktion klont ein Repository in ein separates Verzeichnis auf der Festplatte. Die eigene Entwicklungsumgebung bleibt dabei vollständig unberührt. Man kann so z. B. einen Feature-Branch parallel auschecken und mit xcodex testen — während Xcode weiterhin am eigenen Branch arbeitet.

xcodex
Entwicklungsumgebungen in xcodex

Isolierte Entwicklungsumgebungen: QA und Tester können eigenständig bauen und testen

Workflow

SchrittBeschreibung
1. Auswahl Beim ersten Start muss eine JSON-Konfigurationsdatei ausgewählt werden (siehe unten). Wurde bereits eine Datei geladen, zeigt xcodex diese an — man bestätigt einfach, ob man sie weiter verwenden möchte, oder wählt eine neue.
2. Verzeichnis bereinigen Falls das Zielverzeichnis bereits existiert, fragt xcodex, ob es vorher gelöscht werden soll. Das ist sinnvoll, um mit einem sauberen Stand zu beginnen.
3. Repository klonen Das Repository wird geklont und im konfigurierten Zielverzeichnis abgelegt. Dieser Schritt kann jederzeit erneut über den Befehl Initialisieren im Hauptmenü angestoßen werden.
4. Arbeitsverzeichnis festlegen Nach dem Klonen fragt xcodex, ob das geklonte Verzeichnis als Arbeitsverzeichnis verwendet werden soll. Das entspricht dem Workflow beim Drücken von A im Hauptmenü: xcodex sucht das Xcode-Projekt im geklonten Verzeichnis und verbindet es als aktives Projekt.
5. Aktualisieren Mit Aktualisieren kann ein beliebiger Branch ausgewählt werden. Alle lokalen Änderungen im temporären Verzeichnis werden dabei verworfen — der Branch wird auf den neuesten Commit zurückgesetzt. So lassen sich ältere Versionen oder andere Branches gezielt vergleichen und testen.
6. Löschen Mit Löschen wird das gesamte geklonte Verzeichnis entfernt. Die eigene Entwicklungsumgebung bleibt unberührt.
Beispiel-Szenario: Xcode arbeitet am eigenen Feature-Branch. Parallel dazu klont xcodex den develop-Branch in ein separates Verzeichnis. Über Arbeitsverzeichnis festlegen verbindet xcodex diesen Stand als aktives Projekt — Tests, Builds und Analysen laufen nun gegen den develop-Stand, ohne die eigene Arbeit zu beeinflussen.

Typische Anwendungsfälle

  • QA und Tester — eigenständig den aktuellen develop-Branch bauen und testen, ohne Xcode-Kenntnisse
  • Android-Entwickler — iOS-App in einem definierten Stand ausprobieren
  • UX-Designer — Feature-Branch schnell auf dem Simulator starten
  • Code-Reviews — zweiter Clone zum Testen des Review-Branches, ohne die eigene Umgebung zu berühren

Konfigurationsdatei

Da xcodex nicht wissen kann, welches Repository geklont werden soll und wohin, muss man vorab eine JSON-Konfigurationsdatei erstellen und an einem beliebigen Ort auf der Festplatte ablegen. Diese Datei wird einmalig über Auswahl geladen und anschließend gespeichert — beim nächsten Start ist sie automatisch vorausgewählt.

FeldBedeutung
descriptionFrei wählbarer Name für diese Konfiguration — wird in xcodex als Bezeichnung angezeigt
baseBasisverzeichnis, in das alle Repositories geklont werden (muss mit / enden)
repositories[].nameAnzeigename des Repositories
repositories[].urlGit-URL des Repositories (SSH oder HTTPS)
repositories[].destinationUnterordner innerhalb von base, in den geklont wird

Das vollständige Verzeichnis des geklonten Repositories ergibt sich aus: base + destination. Im Beispiel unten also: /Users/drapatz/Downloads/tempApps/refApps/

{
  "description": "RefenzApps",
  "base": "/Users/drapatz/Downloads/tempApps/",
  "repositories": [
    {
      "name": "RefenzApps-Repository",
      "url": "git@github.com:beispiel/repo.git",
      "destination": "refApps"
    }
  ]
}
Hinweis: Die Datei kann einen beliebigen Namen tragen (z. B. xcodex-env.json) und an jedem Ort auf der Festplatte liegen. Empfehlenswert ist ein fester Ablageort wie das Home-Verzeichnis oder ein Projektordner, damit sie leicht wiedergefunden wird.

19. Developer-Ressourcen

In der letzten Befehlsgruppe sind die am häufigsten benötigten Dokumentations- und Verwaltungsseiten für Apple-Entwickler gebündelt – von der Apple Developer Documentation über App Store Connect bis zum Swift Package Index.

xcodex
Developer-Ressourcen in xcodex

Direktzugriff auf Apple-Dokumentation, App Store Connect und Swift Package Index

RessourceInhalt
Apple Developer DocumentationOffizielle Dokumentation aller Apple-Frameworks und APIs
Swift Documentation & Evolution ProposalsSprachspezifikation und aktive Sprachvorschläge
Human Interface GuidelinesDesign-Richtlinien für iOS, iPadOS und macOS
App Store ConnectApp-Verwaltung, TestFlight und Verkaufsberichte
Apple Developer PortalZertifikate, Provisioning Profiles und Geräte
Swift Package IndexVerzeichnis aller Swift-Pakete

20. Browser-Ansicht

Die Browser-Ansicht ist ein vollständig per Tastatur bedienbarer Datei-Browser direkt in xcodex. Du navigierst durch Verzeichnisse, öffnest Dateien, setzt Favoriten und führst Suchen oder Filter aus – alles ohne Maus und ohne Kontextwechsel.

Browser-Ansicht
Browser-Ansicht

Tastaturgesteuerter Datei-Browser direkt in xcodex

Hotkeys

xcodex ist vollständig auf schnelle Tastatursteuerung ausgelegt. Häufige Aktionen lassen sich direkt über Hotkeys starten, ohne durch lange Menüs zu springen.

TasteAktion
ZZum Arbeitsverzeichnis des Projekts wechseln
0–9Favorit aufrufen
Shift+0–9Aktuelles Verzeichnis als Favorit speichern
FSuche starten
TFilter aktivieren
SAuswahl bestätigen / Verzeichnis setzen
DAusgewähltes Verzeichnis als Arbeitsverzeichnis übernehmen
WIn Finder öffnen

Hilfe

In der Browser-Ansicht steht dir eine kontextsensitive Hilfe zur Verfügung. Drücke H, um das Hilfe-Overlay einzublenden. Es zeigt alle verfügbaren Tastenkürzel und Aktionen für die aktuelle Ansicht — übersichtlich und direkt aufrufbar, ohne die Browser-Ansicht zu verlassen.

Hilfe
Hilfe in der Browser-Ansicht

Kontextsensitive Hilfe — alle Tastenkürzel auf einen Blick

Favoriten

Für häufig genutzte Verzeichnisse kannst du dir bis zu 10 Schnellzugriffe anlegen. Mit den Tasten 0–9 speicherst du deine Favoriten, mit Shift + 0–9 springst du direkt dorthin. Alternativ wechselst du mit W schnell zwischen Browser- und Favoriten-Ansicht.

Favoriten
Favoriten

Verzeichnisse als Favoriten speichern und direkt per Ziffer aufrufen

Suche

Die integrierte Suche durchsucht das aktuelle Verzeichnis inklusive aller Unterordner. Wildcards wie * werden unterstützt, sodass du flexibel nach Dateinamen filtern kannst. Die Treffer werden inklusive vollständigem Pfad angezeigt und lassen sich direkt öffnen.

Suche
Sucheingabe

Verzeichnissuche: Suchbegriff eingeben

Suchergebnisse
Suchergebnisse

Suchergebnisse: direkte Navigation zu gefundenen Verzeichnissen

Filter

Mit Filtern kannst du gezielt bestimmte Dateitypen anzeigen, zum Beispiel Xcode-Projektdateien oder JSON-Dateien. Auch hier bekommst du eine übersichtliche Liste mit Pfadangaben und kannst die gewünschten Dateien sofort öffnen.

Filter
Filtereingabe

Filter: Dateiliste nach Begriff einschränken

Gefilterte Ansicht
Gefilterte Ansicht

Gefilterte Verzeichnisansicht — nur passende Einträge werden angezeigt

Schnellzugriff

  • Pfad kopieren (Z) — Kopiert den absoluten Pfad in die Zwischenablage. Nützlich für externe Tools wie Claude Code.
  • In Finder oder Terminal öffnen (W) — Öffnet das aktuelle Verzeichnis direkt. Ideal für die Weiterarbeit mit Claude Code.
  • Datei öffnen (Return) — Öffnet Xcode-Projekte, Office-Dateien oder andere Formate sofort mit dem passenden Programm.

Diese kleinen Funktionen sparen Zeit und unterstützen dich im Alltag, ohne den Flow zu unterbrechen.


21. Häufige Probleme

Kein Schema gefunden

Das Arbeitsverzeichnis ist nicht korrekt gesetzt oder die .xcworkspace/.xcodeproj-Datei liegt nicht im aktuellen Verzeichnis. xcodex aus dem Projekt-Root starten.

Simulator nicht verfügbar

Xcode neu öffnen und die gewünschten Simulator-Plattformen installieren. Anschließend xcodex neu starten — die Geräteliste wird automatisch aktualisiert.

Build schlägt fehl

Fehlermeldung und betroffene Datei aus der roten Ausgabe entnehmen. Bei unerklärlichen Fehlern zuerst DerivedData löschen (Clean & Cache) und dann erneut bauen.

Xcode Command Line Tools fehlen

xcode-select --install

Nach der Installation Terminal neu starten.

Push Notification funktioniert nicht

Die App muss Push Notifications im entitlements-File aktiviert haben und korrekt im Apple Developer Portal registriert sein. Im Simulator werden Notifications auch ohne APNs-Zertifikat unterstützt.

Rechteproblem beim Starten

xcodex ist nicht ausführbar. Lösung:

chmod +x /pfad/zu/xcodex

„missing module"-Fehler nach Branch-Wechsel

Abhängigkeiten nach dem Branch-Wechsel neu auflösen: Build & Run → Alle Dependencies auflösen.


22. Tipps für den Alltag

TippErklärung
Alias verwendenxcodex in ~/.zshrc einrichten, damit der Befehl aus jedem Verzeichnis funktioniert
Aus dem Projektverzeichnis startenxcodex erkennt die Projektdatei automatisch, wenn es im Root-Verzeichnis des Projekts gestartet wird
Vor Pull RequestsLokale Builds und Tests ausführen, bevor ein PR erstellt wird — vermeidet fehlschlagende CI-Pipelines
Isoliertes DerivedDataxcodex baut in ein isoliertes Verzeichnis, sodass parallele Xcode-Builds nicht beeinflusst werden
Nach git pullZuerst Dependencies auflösen (Sektion Abhängigkeiten), dann bauen
Vor einem Release-BuildProvisioning Profiles prüfen und Simulator-Cache leeren
Regelmäßig aktualisierengit pull im xcodex-Verzeichnis hält das Tool auf dem neuesten Stand

23. Haftungsausschluss

xcodex ist ein unabhängiges Open-Source-Werkzeug und steht in keiner Verbindung zu Apple Inc. „Xcode" und „TestFlight" sind eingetragene Marken von Apple Inc. Die Nutzung des Tools erfolgt auf eigene Verantwortung. Für Schäden, die aus der Nutzung entstehen, wird keine Haftung übernommen.


← Zurück zur Startseite
← Back to homepage

Tutorial — xcodex

Step-by-step guide for iOS, iPadOS and macOS developers.

1. What is xcodex?

xcodex is a terminal-based CLI tool for Apple developers. It consolidates the most important Xcode workflows into a single, keyboard-driven interface — without memorizing flags, without context switching, without opening Xcode.

The tool supports iOS, iPadOS and macOS projects and covers the entire development workflow: build, tests, simulator control, device management, archives, TestFlight/App Store delivery, localization, code coverage, crash analysis and project maintenance.

Note: xcodex is not affiliated with Apple Inc. or Xcode. It is an independent open-source tool and not an official Apple product.

Tutorial as PDF

Download this tutorial as a PDF in the currently selected language — for offline reading, printing or archiving.

Save Tutorial as PDF

Download xcodex

Download the notarized xcodex.zip directly — no Git clone required. Unzip, set executable permission and launch immediately.

Download xcodex.zip

2. Requirements

RequirementNotesDownload
macOS 13 Ventura+macOS only
XcodeFull install from the Mac App Store (~30 GB). Open once to install componentsApp Store ↗
developer.apple.com ↗
Command Line ToolsIncludes Git, xcodebuild, clang, make, svnDownload ↗
xcode-select --install
Swift 5.9+Included with Xcode
GitFor cloning the repository
Homebrew (optional)For CocoaPods and other toolsbrew.sh ↗
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
CocoaPods (optional)Only if your project uses CocoaPodsbrew install cocoapods
Carthage (optional)Only if your project uses Carthagebrew install carthage
xcbeautify (optional)For readable build outputbrew install xcbeautify
xcodes CLI (optional)For managing Xcode versionsgithub.com/XcodesOrg/xcodes ↗
brew install xcodesorg/made/xcodes

3. Installation

The following requirements must be met before installation:

RequirementNotesDownload
Xcode ~30 GB, open once to install components App Store ↗
developer.apple.com ↗
Xcode Command Line Tools Includes Git, xcodebuild, clang, make, svn Download ↗
xcode-select --install

Clone the repository

This command downloads the complete xcodex source code to your Mac. Git creates the directory ~/Developer/xcodex containing all files. Having a Git clone lets you apply future updates with a single git pull — no need to re-download manually.

git clone https://github.com/drapatzc/xcodex.git ~/Developer/xcodex

Set executable permission

By default, macOS does not allow running downloaded files as programs. chmod +x grants the operating system permission to execute the xcodex file. This step only needs to be done once after cloning.

chmod +x ~/Developer/xcodex/xcodex

Set up shell alias (recommended)

A shell alias lets you run xcodex from any directory without typing the full path. The alias is saved permanently in your shell's configuration file and is available automatically from the next terminal session onward.

echo 'alias xcodex="$HOME/Developer/xcodex/xcodex"' >> ~/.zshrc
source ~/.zshrc
echo 'alias xcodex="$HOME/Developer/xcodex/xcodex"' >> ~/.bash_profile
source ~/.bash_profile
alias xcodex="$HOME/Developer/xcodex/xcodex"
funcsave xcodex
Which shell am I using? Run echo $SHELL in your terminal. The output shows the path to your active shell — e.g. /bin/zsh, /bin/bash, or /usr/local/bin/fish.

Run

Navigate to your Xcode project's root directory and launch xcodex. On first launch you need to manually select your project or workspace so xcodex has all the information it needs — scheme, device and build configuration. Only then can xcodex correctly build and test your app.

cd YourXcodeProject
xcodex

Update

git pull downloads the latest changes from the repository and applies them to your local copy. This keeps xcodex up to date without needing to clone it again.

cd ~/Developer/xcodex
git pull

Download xcodex directly

You can also download the notarized xcodex.zip directly — no Git clone required. Download the ZIP file, unzip it and place the binary in a fixed path (e.g. ~/Developer/xcodex/). Then only follow steps 2 to 4: set executable permission, configure the shell alias and run xcodex. Updates need to be applied manually by re-downloading.


4. The Menu Interface

The interface is split into two panes: command groups on the left, actions on the right. Navigation is entirely keyboard-driven.

xcodex
xcodex menu interface

Split-pane interface: command groups on the left, actions on the right

KeyAction
/ Navigate within the active pane
/ Switch between groups and actions
Execute the selected action
HShow context-sensitive help for the current action
XReturn to menu
Shift+QQuit the application
19Direct access to hotkeys in the bottom bar
Shift+<Letter>Jump directly to a command group
LToggle interface language
SpaceSwitch between XCode view and Browser view
Shift+AOpen Browser view in the current working directory
Shift+WJump directly to Browser view

All settings persist automatically between sessions.

Hotkeys vs. commands: The table below lists all global hotkeys. Unlike commands in the action list — which may prompt for confirmation — hotkeys execute immediately without further input, making them ideal for fast, repetitive workflows.
HotkeyCommandDescription
1Delete DerivedDataRemoves the project's DerivedData folder and forces a clean rebuild
2Clear all cachesClears DerivedData, module cache, and package manager caches (SPM, CocoaPods, Carthage)
3Build & RunBuilds the app and launches it directly on the active device (simulator, physical device, or Mac)
4Quick Reset & BuildDeletes project DerivedData, rebuilds and launches the app — the fastest fix for persistent build errors
5Close XcodeQuits Xcode without losing terminal focus
6Open project in XcodeOpens the active project directly in Xcode
7Run unit testsStarts the unit test run with the configured test scheme
8Automated testsOpens the menu for automated and combined test runs
9Update projectTriggers a project update (e.g. re-resolve dependencies)

5. Getting Started — Project Setup

On first launch from a project directory, xcodex needs to be configured once.

xcodex
Project setup in xcodex

Step by step: select project, scheme, device and build configuration

Step 1 — Select working directory

xcodex automatically searches for Xcode files in the current directory. If none is found, a file browser opens for manual selection.

Step 2 — Select app scheme

The scheme controls what gets built and how it is launched. Optionally select a separate test scheme or test plan — useful when tests are organized in their own target.

Step 3 — Select target device

Available simulators and connected physical devices are automatically detected from the current Xcode installation.

Step 4 — Choose build configuration

  • Debug — daily development, with symbols and logs
  • Release — App Store builds, with all optimizations enabled
Tip: Scheme, device and configuration can be changed at any time via S, D and C in the menu — no need to restart the tool. All settings are saved automatically.

Quick shortcuts in the header

In the main menu, additional single-key shortcuts are active in the header to speed up the configuration flow:

KeyFunction
WSelect working directory
SSelect app scheme
TSelect test target
DSelect target device
CSwitch build configuration (Debug / Release)
BShow and copy bundle ID
LToggle interface language (German / English)

6. XCode View vs. Browser View

xcodex offers two main views you can switch between at any time: the XCode view with all developer tools and the Browser view — a keyboard-driven file browser.

xcodex — Switch View
View selection in xcodex

Switch between XCode view and Browser view using the Space key

KeyAction
SpaceSwitch between XCode view and Browser view
Shift+XJump directly to XCode view
Shift+WJump directly to Browser view
Shift+AIn XCode view: open Browser view with working directory
Tip: Use Shift+A in the XCode view to switch directly to the Browser and land automatically in the current project working directory.

7. Clean & Cache

Xcode stores all build artifacts in a shared DerivedData folder. When builds fail for no apparent reason, the app behaves strangely, or errors appear after a refactoring that don't exist in the code — a targeted cleanup helps.

xcodex
Clean & Cache in xcodex

Clean & Cache: various cleanup options at a glance

ActionWhat is cleanedWhen to use
Show all directoriesCache browser with size display and selective deletionOverview before cleaning
Clean buildCompiled artifacts of the current schemeSmall reset before a clean build
Delete DerivedData (project)Project-specific DerivedData folderUnexplained build failures
Delete DerivedDataEntire DerivedData folderFull build cache reset
Delete directories (without package managers)DerivedData, Xcode caches, Simulator cacheQuick reset without touching package managers
Delete directories (with package managers)+ CocoaPods, Carthage and SPM cachesWhen package manager caches should also be cleaned
Delete directories (Safe)DerivedData, ModuleCache, SwiftPM, Xcode caches, Simulator cache, Logs, Diagnostic ReportsComprehensive reset — everything Xcode recreates automatically
Delete directories (Deep)Everything from "Safe" + Archives, iOS DeviceSupport, all simulator devicesPersistent issues; recover a lot of storage
Delete directories (Complete)Everything from "Deep" + CocoaPods, Carthage and SPM cache; optional Simulator RuntimesMaximum storage recovery
Delete directories (Restart)Full reset including SourcePackages for a clean project restartWhen everything needs to be rebuilt from scratch
Tip: For unexplained behavior, try deleting DerivedData first — it resolves the majority of cache-related issues in under 10 seconds.

8. Build & Run

xcodex offers several preconfigured build modes optimized for common development scenarios.

xcodex
Build & Run overview in xcodex

Build & Run: different modes for different situations

ActionWhat happensWhen to use
ValidateChecks the project for configuration errorsBefore the first build in a new setup
Dependencies / Package managersResolves SPM, CocoaPods and Carthage dependenciesAfter cloning or on package errors
Project configurationShows all build settings for the selected schemeTo diagnose configuration issues
BuildCompiles the project without launchingQuick compilation check
Build & RunBuilds and launches the app in the simulator or on macOSStandard development workflow
Clean (without package managers) & Build & RunDeletes DerivedData and Xcode caches, then rebuilds and launchesBuild failures caused by cache issues
Clean (incl. package managers) & Build & RunDeletes all caches including package manager caches, then rebuilds and launchesPersistent issues or after package manager changes

Understanding build output

During the build, xcodex shows each step with its duration. Errors are highlighted in red with the affected file and line number.

xcodex
Build output in xcodex

Build output: structured, compact, with timing per step

Isolated DerivedData

xcodex builds into its own DerivedData directory, completely separate from Xcode. Both can run simultaneously without interfering with each other.

Tip: Use V to validate the project before building — checks that all dependencies are resolved and the scheme is correctly configured.

9. Dependencies

CocoaPods, SPM or Carthage dependencies can be managed directly from xcodex — no terminal experience required.

xcodex
Dependencies in xcodex

Dependencies: SPM, CocoaPods and Carthage in one menu

Package ManagerCommand
Swift Package Managerswift package resolve
CocoaPodspod install
Carthagecarthage update
Tip: After a git pull, resolve all dependencies before building — this prevents the most common "missing module" errors after branch switches.

10. Simulator & Physical Devices

Depending on the selected target device, xcodex shows either the Simulator group or the Physical Devices group — never both at the same time. The available actions automatically adapt to the active device.

Simulator

Simulators can fall into an inconsistent state — especially after iOS updates or extended uptime. This group restores control.

xcodex
Simulator control in xcodex

Simulator: reinstall app, reset, close all instances

ActionWhat happensWhen to use
Create new simulatorChoose runtime and device type, create simulator via xcrun simctl createWhen a specific device/iOS combination is missing
Launch appLaunches the built app on the selected simulatorAfter a build without rebuilding
Launch app on selected simulatorLike "Launch app" but with prior simulator selectionTesting on a different device
Uninstall app & fresh testUninstalls the app and reinstalls itClean start without old app state
Restart simulatorShuts down the simulator and restarts itFor a hanging or unstable simulator
Stop simulatorShuts down the running simulatorFree up resources
Reset simulatorResets the current simulator to factory stateCompletely remove app data and settings
Show simulator statusAll simulators grouped by runtime, color-coded (Booted / Shutdown)Overview of installed simulators
Erase simulator contentsDeletes all content of all simulators (xcrun simctl erase all)Full reset of all simulator data
Delete unavailable simulatorsRemoves simulators without an installed runtimeCleanup after Xcode updates
Stop all simulatorsStops all running simulators at onceFree up resources, before a build
Delete all simulator devicesRemoves all simulator device entries (xcrun simctl delete all)Full restart of simulator infrastructure
Delete simulator cachesRemoves temporary CoreSimulator cachesDisplay glitches or behavior after iOS updates

Remote control the simulator

After the app launches, simulator settings can be changed directly from xcodex — no need to dig through the simulator's own menus.

xcodex
Simulator controls in xcodex

Controls: Dark Mode, permissions, status bar, push notifications

1. Interaction

#CommandTesting value
01Test push notificationSimulates an APNs payload without a real server — ideal for notification UX tests.
02Open deep linkOpens a URL scheme directly, without manually navigating the app.

2. Appearance

#CommandTesting value
01Toggle Dark / Light ModeChecks that all assets and colors respond correctly to both modes.
02Mock status barSets defined values (time, signal strength) for screenshots and UI tests.
03Reset status barRestores the status bar mock back to the real system state.
04Set Dynamic TypeTests layout stability at extreme font sizes.
05Toggle Bold TextChecks readability with the bold-text accessibility setting enabled.
06Toggle Reduce MotionEnsures animations are correctly disabled.
07Toggle Increase ContrastValidates contrast ratios for accessibility.
08Set Display Zoom (iPhone only)Tests layout in enlarged display mode.
09Toggle Reduce TransparencyChecks UI elements with blur effects disabled.
10Toggle On/Off LabelsEnsures toggles are recognisable without colour alone.
11Differentiate Without ColorTests that the app does not rely exclusively on colour to convey information.

3. Permissions

#CommandTesting value
01Set permissionsGranular control of individual privacy grants.
02Reset all app permissionsResets the app's permission state to "not asked" — for permission-flow tests.
03–19Quick Grants (Camera, Microphone, Location, Photos, Contacts, Calendar, Reminders, Motion, Health, Network, Bluetooth, HomeKit, Media Library, Siri, Speech, Local Network, User Tracking)Grant a single permission in one step — saves dialog clicks on every test run.
20Grant all permissionsSets the entire permission list to "allowed" — for quick tests beyond the permission flow.

4. Language & Region

#CommandTesting value
01Set app languageTests app localisation without changing the system language.
02Set system languageTests global language effects (keyboard, system dialogs).
03Toggle 24h formatValidates time display in both formats.
04Reset system languageResets all language settings to factory defaults.

5. Runtime

#CommandTesting value
01Slow AnimationsSlows down animations — transition errors become visible.
02Highlight Clipped ViewsShows clipped UI elements immediately highlighted in red.
03Set Launch ArgumentsInjects -argument flags for feature flags and test modes without a build.
04Set Env VariablesPasses environment variables to the app on launch.
05Simulate Memory PressureTests app behaviour under memory pressure (warning levels).
06Test URL SchemeOpens a deep link and checks the handling.
07Core Data DebugEnables SQL logging for Core Data — shows all queries.
08Localization DebugEnables double length / pseudolanguage — layout problems become immediately visible.
09SwiftUI DebugShows SwiftUI render boundaries and invalidations in the console.
10Background FetchTriggers a background fetch manually — without a 20-minute wait.
11Background LaunchLaunches the app in background mode.
12Metal ValidationEnables Metal API validation for GPU code.

6. Device & System

#CommandTesting value
01Set locationSimulates GPS coordinates without a real location.
02Simulate battery statusTests low-battery warnings and charge-level logic.
03Set cellular modeSimulates EDGE, LTE, 5G or no signal.
04Reset IDFAResets the advertising ID — for tracking tests.
05Trigger iCloud syncForces an iCloud sync without waiting.
06Set timezoneTests timezone-sensitive logic (calendar, countdowns).
07Mock status bar timeSets a fixed time for consistent screenshots.
08Stop location simulationEnds the simulated GPS location.
09Set Wi-Fi barsTests UI at various Wi-Fi signal strengths.
10Set cellular barsTests UI at various mobile signal strengths.
11Set carrier nameSets a custom carrier name in the status bar.
12Stage Manager (iPad only)Tests the layout in Stage Manager mode.
13Set audio routeSwitches between speaker, headphones, Bluetooth.

7. Data

#CommandTesting value
01Add mediaImports photos/videos into the simulator's photo library.
02Clear simulator keychainRemoves all stored keychain entries for the app.
03Open app data folderOpens the container directly in Finder — for manual file debugging.
04Reset app UserDefaultsDeletes all stored UserDefaults values for the app.
05Delete all app dataRemoves the entire app container.
06Open App Group containerOpens the shared container in Finder.
07Show app defaultsLists all current UserDefaults keys and values.
08Open SQLite databaseOpens the app's database directly in an external editor.
09Show keychain entriesLists all stored keychain entries for the app.
10Install root certificateInstalls a custom CA certificate for SSL pinning tests.
11Measure app containerShows the size of the app container on disk.
12Export app containerExports the container as an archive for offline analysis.
13Edit UserDefaults keyChanges individual keys directly — without an app restart.

8. Logs & Diagnostics

#CommandTesting value
01Stream app logsLive log output from the app in the console.
02Filter consoleFilters the system console to relevant subsystems.
03Open crash logOpens the app's most recent crash report.
04Create diagnostic reportCreates a full simulator diagnostic report.
05Show app versionShows the bundle version and build number of the installed app.
06Stream system logsFull system console of the simulator.
07Validate Privacy ManifestChecks the PrivacyInfo.xcprivacy for completeness.
08SwiftData DebugEnables SQL logging for SwiftData.
09Create sysdiagnoseCreates a full system diagnostic archive.

9. Live Activities

#CommandTesting value
01Start Live ActivityStarts a Live Activity with a custom payload.
02Update Live ActivitySends an update to a running Live Activity.
03End Live ActivityEnds a Live Activity.

10. WidgetKit

#CommandTesting value
01Reload widget timelinesForces a timeline refresh without waiting.
02Clear widget cacheClears the internal WidgetKit cache.

11. App Clips

#CommandTesting value
01Test App Clip URLOpens an App Clip experience via URL.
02Reset App Clip experienceResets the stored App Clip state.
Tip: Set the status bar to "9:41, full battery, full signal" before creating App Store screenshots — exactly as Apple does in official presentations.
Note: A full simulator reset deletes all data — including Keychain entries, settings and test accounts. Make sure no important test data will be lost.

Physical Devices

This group controls directly connected iOS devices via USB or Wi-Fi. It is only visible when a physical device is selected as the target.

xcodex
Physical Devices in xcodex

Full device management for physical iOS devices directly in the terminal

ActionDescription
Show all devicesLists all connected physical devices with name, UDID and iOS version
Install AppInstalls the last built app bundle on the connected device (device must be unlocked and trusted)
Launch AppLaunches the installed app on the connected device
Terminate appTerminates the app process on the device without manually operating it
Uninstall appCompletely removes the app from the device including all local data
List Installed AppsDisplays bundle identifiers and names of all installed apps on the device
Live log from deviceStreams console output from the device in real time — stop with Ctrl+C

11. Tests

xcodex separates unit tests and UI tests so the right run can be started for each situation — fast unit tests in the development loop, UI tests before commits or releases.

xcodex
Tests in xcodex

Tests: unit tests, UI tests and all tests with one action

Test typeDescription
Unit TestsFast, no simulator launch required
UI TestsLaunches the app in the simulator and runs interaction tests
All TestsCombined run

Result states: ✅ Passed · ⚠️ Skipped · ❌ Failed

Re-run failed tests individually

xcodex
Unit tests and re-run in xcodex

Failed tests are highlighted in red and can be re-run individually

After a run, xcodex lists all results. Failed tests can be re-run individually — without repeating the entire test suite. Typical workflow:

  1. Run all tests
  2. Identify failed tests
  3. Implement fix
  4. Re-run only the affected tests
  5. On success: run full suite to confirm

Code Coverage

The code coverage view shows you directly how well your project is covered by tests. xcodex can run test suites with coverage enabled, evaluate the results and show you which areas are already well tested and where gaps remain. This helps you spot weaknesses early — before they surface in a review, a CI/CD pipeline or a release.

xcodex
Code coverage in xcodex

Code coverage per file: quickly identify where tests are missing

CoverageAssessment
80–100 %Well covered — critical paths are tested
50–80 %Room for improvement, especially for complex logic
< 50 %High risk on changes — tests are missing

Automated Tests

The automated tests view bundles recurring test runs into a clear terminal workflow. You can run unit tests selectively and test different combinations of scheme, device and configuration. This lets you repeat typical pre-pull-request or pre-release checks faster, without having to reassemble long xcodebuild commands each time.

xcodex
Automated tests in xcodex

Automated tests run completely independently of Xcode

Automated tests run fully independently of Xcode — Xcode can be open simultaneously without affecting the test run. Ideal for:

  • In parallel with development — tests for feature A while working on feature B
  • QA without Xcode knowledge — testers can run test suites independently
  • Second clone — test the last commit without touching your own development environment

12. Xcode Integration

This group contains quick-access commands for Xcode itself — for switching between the terminal and the IDE.

xcodex
Xcode integration in xcodex

Open and close Xcode directly from xcodex

ActionWhat happensWhen to use
Tools & versionsShows installed versions of Xcode, Swift, CocoaPods, SwiftLint and moreQuick overview of the development environment
Close XcodeQuits XcodeBefore cache operations or switching Xcode versions
Restart XcodeCloses Xcode and reopens itFor a hanging Xcode or after settings changes
Open XcodeOpens the current project in XcodeQuick access without Finder
Switch Xcode versionSwitches the active Xcode version via xcode-selectWhen multiple Xcodes are installed and a specific one is needed
Install Xcode versionInstalls a new Xcode version via XcodesInstall a new Xcode version alongside the existing one
Uninstall Xcode versionRemoves an installed Xcode version via XcodesDelete old versions and free up storage
Open Xcode logsOpens ~/Library/Logs/Xcode in FinderFor unexplained errors or crashes in Xcode
Install Command Line ToolsStarts the macOS system dialog for CLT installationAfter a macOS update or on a new Mac
Reset Xcode preferencesDeletes com.apple.dt.Xcode.plist after confirmationFor UI freezes or broken keyboard shortcuts in Xcode
Reset Xcode user dataRemoves ~/Library/Developer/Xcode/UserData/ after confirmation (Keybindings, Themes, Snippets)When Xcode customizations cause problems
Tip: Close Xcode before a Full Reset & Build — this prevents file locks on the DerivedData folder.

13. App Store & Distribution

xcodex covers the entire distribution process — from archiving to upload. This saves the manual work in Xcode Organizer and enables uploads directly from the terminal.

xcodex
App Store distribution in xcodex

App Store: archive, validate and upload in a structured workflow

Prerequisite: App-specific password

For uploads to TestFlight or App Store Connect, xcodex requires an app-specific password:

  1. Open appleid.apple.com
  2. Go to Security → App-Specific Passwords
  3. Create a new password (e.g. "xcodex Upload")
  4. Enter the password once in xcodex settings

Typical release workflow

xcodex
App Store delivery in xcodex

Release workflow: validating before upload prevents common submission errors

  1. Full Reset & Build with Release configuration
  2. Archive
  3. Validate — fix errors if any
  4. Upload to TestFlight — for beta testing
  5. After approval: submit to App Store
Note: For macOS apps, the archive is automatically notarized and stapled (Notarize & Staple) before upload — a step that is error-prone when done manually.

14. Directories

Xcode distributes its data across several nested Library paths. xcodex opens the most important folders with a single keystroke directly in Finder.

xcodex
Directories in xcodex

Directories: DerivedData, archives, simulators and provisioning profiles in one click

ActionPathContent
Finder → Desktop~/DesktopDesktop files
Finder → Downloads~/DownloadsDownloads folder
Finder → Documents~/DocumentsDocuments
Finder → Project foldercurrent working directory.xcworkspace / .xcodeproj and project files
Finder → DerivedData~/Library/Developer/Xcode/DerivedDataEntire DerivedData of all projects
Finder → DerivedData/<ProjectName>~/Library/Developer/Xcode/DerivedData/<ProjectName>-…DerivedData of the current project
Finder → Build Logs…/DerivedData/<ProjectName>/Logs/BuildBuild logs of the current project
Finder → SourcePackages…/DerivedData/<ProjectName>/SourcePackagesCloned SPM packages of the current project
Finder → Module Cache~/Library/Developer/Xcode/DerivedData/ModuleCache.noindexPre-compiled module cache
Finder → Xcode Caches~/Library/Caches/com.apple.dt.XcodeXcode's own cache data
Finder → Simulators~/Library/Developer/CoreSimulator/DevicesAll simulator devices and app data
Finder → Simulator Cache~/Library/Developer/CoreSimulator/CachesTemporary simulator caches
Finder → Archives~/Library/Developer/Xcode/ArchivesXcode archives (.xcarchive)
Finder → DiagnosticReports~/Library/Logs/DiagnosticReportsCrash and diagnostic reports
Finder → iOS Device Logs~/Library/Logs/CrashReporterCrash logs from connected devices
Finder → Provisioning Profiles~/Library/MobileDevice/Provisioning ProfilesInstalled provisioning profiles

15. Localization

Localization errors often only surface at runtime — when the app has already been shipped. xcodex checks the .xcstrings file fully statically, without a build process and without Xcode. Missing keys, duplicate entries and inconsistencies between languages are made immediately visible. This allows localization issues to be caught and fixed during development, before they reach the user.

xcodex
Localization in xcodex

Localization: missing keys, duplicate keys and consistency check

ActionWhat happensWhen to use
Show available languagesLists all detected language codes from .lproj folders and .xcstrings filesOverview of which languages are present in the project
Missing localizationsShows keys that are completely missing in at least one languageCheck before a release whether all languages are complete
Unused localizable keysShows keys present in localization files but not referenced in codeClean up outdated or forgotten keys
Duplicate translation keysFinds keys that appear multiple times in the same fileFor unexplained translation errors
Inconsistent placeholdersDetects keys where placeholders (%@, %d etc.) differ between languagesPrevents crashes from incorrect format arguments
Empty translationsFinds keys with an existing but empty entry ("" or whitespace only)Complements the missing key check — empty values are otherwise overlooked
Translation statisticsShows the translation progress per language as a progress bar from .xcstrings filesQuick overview of how complete each language is
Search key / valueInteractive search in .xcstrings by key name or translation valueQuickly find a specific text or key
Export XLIFFRuns xcodebuild -exportLocalizations and places a .xcloc package on the desktopCreate translation packages for external translators
Note: xcodex checks the .xcstrings file directly — no dependency on Xcode or a build process.

16. Apps

The "Apps" command group lets you open frequently used macOS apps directly from the toolbox — no Dock, Spotlight or Finder required. Only apps that are actually installed appear in the list. Apps are launched via their full path, which is more reliable on macOS 26+ than the open -a command.

Apps
Apps in xcodex

Open frequently used macOS apps directly from the toolbox

AppGroupPurpose
XcodesApple Developer ToolsManage, install and switch Xcode versions
DeveloperApple Developer ToolsApple Developer Portal and documentation
App StoreApple Developer ToolsOpen the App Store
TestFlightApple Developer ToolsManage and test beta apps
SafariApple Developer ToolsWeb browser for documentation and research
TerminalSystem ToolsCommand line
ConsoleSystem ToolsRead system logs and diagnostic messages
Activity MonitorSystem ToolsMonitor CPU, memory and process usage
System SettingsSystem ToolsmacOS settings
PasswordsSystem ToolsManage macOS passwords and Keychain
SF SymbolsSystem ToolsBrowse and copy Apple SF Symbols
ForkThird-partyGit client
InsomniaThird-partyREST and API testing
CyberduckThird-partyFTP/SFTP/S3 file transfer
DevCleanerThird-partyClean Xcode caches and developer data
Apps that are not installed are hidden. The list adapts automatically to the software available on your system.

17. Miscellaneous

Miscellaneous bundles functions that appear less frequently in the daily workflow but can be critical at the right moment. This includes analyzing crash reports, launching Instruments sessions, and managing provisioning profiles. Especially with hard-to-reproduce crashes or build issues right before a release, these tools are invaluable — and accessible directly from xcodex.

xcodex
Miscellaneous in xcodex

Crash reports, Instruments and provisioning profile management

  • Analyze Crash Reports — symbolizes .crash files and shows readable stack traces. Requires the matching .dSYM archive
  • Instruments (Beta) — starts profiling sessions directly from xcodex
  • Manage Provisioning Profiles — lists all local profiles and allows removal of expired ones

Provisioning profiles at a glance

This view shows you all locally available provisioning profiles at a glance. You can see immediately which ones are valid, which app they belong to and where problems exist. This quickly reveals the cause when builds fail locally — without having to click through Xcode.

xcodex
Provisioning profiles in xcodex

All local provisioning profiles at a glance — remove expired ones directly

ColumnInformation
NameHuman-readable profile name
App IDBundle Identifier the profile applies to
TypeDevelopment, AdHoc, App Store, Enterprise
Expiry dateWhen the profile becomes invalid
DevicesNumber of registered devices (Development/AdHoc)
Tip: Check the profile list before a release build — an expired distribution profile will block the upload to App Store Connect.

18. Isolated Development Environments

This feature clones a repository into a separate directory on disk. Your own development environment remains completely untouched. You can, for example, check out a feature branch in parallel and test it with xcodex — while Xcode continues working on your own branch.

xcodex
Isolated development environments in xcodex

Isolated environments: QA and testers can build and test independently

Workflow

StepDescription
1. Select On first launch, a JSON configuration file must be selected (see below). If a file was already loaded, xcodex displays it — you simply confirm whether to keep using it or choose a new one.
2. Clean directory If the target directory already exists, xcodex asks whether to delete it first. This is useful to start with a clean state.
3. Clone repository The repository is cloned and placed in the configured target directory. This step can be triggered again at any time via the Initialize command in the main menu.
4. Set working directory After cloning, xcodex asks whether to use the cloned directory as the working directory. This corresponds to pressing A in the main menu: xcodex locates the Xcode project in the cloned directory and connects it as the active project.
5. Update With Update, any branch can be selected. All local changes in the temporary directory are discarded — the branch is reset to the latest commit. This allows you to compare and test older versions or other branches.
6. Delete With Delete, the entire cloned directory is removed. Your own development environment remains untouched.
Example scenario: Xcode is working on your own feature branch. In parallel, xcodex clones the develop branch into a separate directory. Via Set working directory, xcodex connects this state as the active project — tests, builds and analyses now run against the develop state without affecting your own work.

Typical use cases

  • QA and testers — independently build and test the current develop branch without Xcode knowledge
  • Android developers — try out the iOS app in a defined state
  • UX designers — quickly launch a feature branch on the simulator
  • Code reviews — second clone for testing the review branch without touching your own environment

Configuration file

Since xcodex cannot know which repository to clone or where, you need to create a JSON configuration file in advance and place it anywhere on disk. This file is loaded once via Select and saved — on the next launch it is automatically pre-selected.

FieldMeaning
descriptionFreely chosen name for this configuration — displayed as a label in xcodex
baseBase directory into which all repositories are cloned (must end with /)
repositories[].nameDisplay name of the repository
repositories[].urlGit URL of the repository (SSH or HTTPS)
repositories[].destinationSubdirectory within base into which the repository is cloned

The full path of the cloned repository is: base + destination. In the example below: /Users/username/Downloads/tempApps/refApps/

{
  "description": "ReferenceApps",
  "base": "/Users/username/Downloads/tempApps/",
  "repositories": [
    {
      "name": "ReferenceApps-Repository",
      "url": "git@github.com:example/repo.git",
      "destination": "refApps"
    }
  ]
}
Note: The file can have any name (e.g. xcodex-env.json) and be stored anywhere on disk. A fixed location such as the home directory or a project folder is recommended so it can be easily found again.

19. Developer Resources

The last command group bundles the most frequently needed documentation and management pages for Apple developers — from Apple Developer Documentation to App Store Connect and the Swift Package Index.

xcodex
Developer resources in xcodex

Direct access to Apple documentation, App Store Connect and Swift Package Index

ResourceContent
Apple Developer DocumentationOfficial documentation for all Apple frameworks and APIs
Swift Documentation & Evolution ProposalsLanguage specification and active language proposals
Human Interface GuidelinesDesign guidelines for iOS, iPadOS and macOS
App Store ConnectApp management, TestFlight and sales reports
Apple Developer PortalCertificates, provisioning profiles and devices
Swift Package IndexDirectory of all Swift packages

20. Browser View

The Browser view is a fully keyboard-driven file browser directly in xcodex. You navigate through directories, open files, set favorites and perform searches or filters — all without a mouse and without switching context.

Browser View
Browser View

Keyboard-driven file browser directly in xcodex

Hotkeys

xcodex is built for fast keyboard control throughout. Common actions can be triggered directly via hotkeys, without navigating through long menus.

KeyAction
ZJump to the project working directory
0–9Open favorite
Shift+0–9Save current directory as favorite
FStart search
TActivate filter
SConfirm selection / set directory
DUse selected directory as working directory
WOpen in Finder

Help

The Browser view includes context-sensitive help. Press H to open the help overlay. It shows all available keyboard shortcuts and actions for the current view — clearly laid out and accessible without leaving the Browser view.

Help
Help in Browser View

Context-sensitive help — all keyboard shortcuts at a glance

Favorites

You can set up to 10 quick-access shortcuts for frequently used directories. Use keys 0–9 to save your favorites and Shift + 0–9 to jump directly to them. Alternatively, press W to switch quickly between the browser and favorites view.

Favorites
Favorites

Save directories as favorites and access them directly with a number key

Search

The built-in search scans the current directory including all subdirectories. Wildcards such as * are supported, letting you filter flexibly by filename. Results are shown with the full path and can be opened directly.

Search
Search input

Directory search: enter search term

Search Results
Search results

Search results: direct navigation to found directories

Filter

With filters you can display specific file types, for example Xcode project files or JSON files. You get a clear list with path information and can open the desired files immediately.

Filter
Filter input

Filter: narrow the file list by term

Filtered View
Filtered view

Filtered directory view — only matching entries are shown

Quick Access

  • Copy path (Z) — Copies the absolute path to the clipboard. Useful for external tools such as Claude Code.
  • Open in Finder or Terminal (W) — Opens the current directory directly. Ideal for continuing work with Claude Code.
  • Open file (Return) — Opens Xcode projects, Office files or other formats immediately with the appropriate application.

These small features save time and support your daily workflow without interrupting your flow.


21. Common Issues

No scheme found

The working directory is not set correctly or the .xcworkspace/.xcodeproj file is not in the current directory. Launch xcodex from the project root.

Simulator not available

Open Xcode and install the desired simulator platforms. Then restart xcodex — the device list is updated automatically.

Build fails

Take the error message and affected file from the red output. For unexplained errors, delete DerivedData first (Clean & Cache) and then build again.

Xcode Command Line Tools missing

xcode-select --install

Restart the terminal after installation.

Push notification not working

The app must have Push Notifications enabled in the entitlements file and be correctly registered in the Apple Developer Portal. In the simulator, notifications are supported without an APNs certificate.

Permission error on launch

xcodex is not executable. Solution:

chmod +x /path/to/xcodex

"missing module" error after branch switch

Resolve dependencies after the branch switch: Build & Run → Resolve All Dependencies.


22. Everyday Tips

TipExplanation
Use an aliasAdd xcodex to ~/.zshrc so the command works from any directory
Launch from the project directoryxcodex detects the project file automatically when started in the root directory of the project
Before pull requestsRun local builds and tests before creating a PR — this avoids failing CI pipelines
Use isolated DerivedDataxcodex builds into an isolated directory, so parallel Xcode builds are not affected
After git pullResolve dependencies first (see Dependencies section), then build
Before a release buildCheck provisioning profiles and clear simulator cache
Update regularlygit pull in the xcodex directory keeps the tool up to date

23. Disclaimer

xcodex is an independent open-source tool and is not affiliated with Apple Inc. "Xcode" and "TestFlight" are registered trademarks of Apple Inc. Use of this tool is at your own risk. No liability is accepted for damages arising from its use.


← Back to homepage