#!/bin/bash # Rebreak Native: Dev-Server (Metro) + iOS Build & Run # Pendant zu apps/rebreak/dev-ios.sh, aber für React Native + Expo statt Capacitor. set -e cd "$(dirname "$0")" echo "🧠 Rebreak Native iOS Dev" echo "=========================" # Modi: # ./dev-ios.sh → öffnet Xcode-Workspace (Default — User baut auf iPhone) # ./dev-ios.sh --device → physisches iPhone via USB (CLI-Build + Auto-Launch) # ./dev-ios.sh --simulator → iOS Simulator (schnellster Test-Loop, weniger Auth/Push-Test) MODE="${1:-xcode}" # Metro-Port wird NICHT mehr automatisch gekillt — falls du Metro in einem # anderen Terminal laufen hast, würde das hier die Session zerstören. # Falls Metro hängt: manuell `lsof -ti:8081 | xargs kill -9` ausführen. # Cocoapods: läuft beim ersten Run automatisch via expo run:ios. # Falls "objectVersion 70 not supported" Fehler unter Xcode 26 → CocoaPods updaten: # sudo gem install cocoapods --pre # # Podfile-Fixes werden durch Config-Plugins automatisch reinpatcht: # - plugins/with-fmt-consteval-fix.js → FMT_USE_CONSTEVAL=0 (Xcode 16 + RN 0.79) # - plugins/with-rebreak-protection-ios.js → NEFilter Extension Target # → expo prebuild --clean ist daher SAFE (Plugins regenerieren die Patches). # # Für radikalen Cache-Reset: ./clean-ios.sh # Bei Build-Errors aus dem Nichts: ./clean-ios.sh --build # 3. Run je nach Mode case "$MODE" in --xcode|xcode|"") # Falls Xcode bereits mit Rebreak.xcodeproj (statt .xcworkspace) offen ist, # schließe ihn erst. Sonst kriegst du zwei Project-Windows. osascript -e 'tell application "Xcode" to close every window whose name contains "Rebreak.xcodeproj"' 2>/dev/null || true echo "🔨 Opening Xcode-Workspace..." open -a Xcode ios/Rebreak.xcworkspace echo "" echo "✅ Xcode offen — In Xcode:" echo " 1. iPhone via USB anschließen (falls nicht schon)" echo " 2. Top-Bar: iPhone als Run-Target wählen (links neben Play-Button)" echo " 3. Cmd+R für Build & Run auf iPhone" echo "" echo "ℹ️ Metro: separat starten via 'pnpm expo start --dev-client' falls noch nicht läuft" ;; --device|device) echo "📱 Building für physisches iPhone (USB)..." echo "ℹ️ Erste Mal: Xcode wird geöffnet zum Signing-Setup." pnpm expo run:ios --device ;; --simulator|simulator) echo "📱 Building für iOS Simulator..." pnpm expo run:ios ;; *) echo "Unknown mode: $MODE" echo "Usage: ./dev-ios.sh [--xcode|--device|--simulator]" exit 1 ;; esac