Die meisten Capacitor iOS-Probleme gehören zu fünf Gruppen: falsche Werkzeuge, Abhängigkeitsauflösung (SPM oder CocoaPods), Kompilierfehler von Plugins, code Signierung und Laufzeitprobleme wie „Plugin ist nicht implementiert“ oder ein leerer WebView. Beginnen Sie mit bunx cap doctor, bestätigen Sie, dass Xcode 26 ausgewählt ist, führen Sie bunx cap sync ios, und lesen Sie die erste Fehlermeldung im Xcode-Build-Protokoll, nicht die letzte.
Dieses Leitfaden listet die Fehler auf, die wir am häufigsten in Capacitor 8-Projekten sehen, ihre Ursachen und die Lösungen. Für Android siehe das Capacitor Android-Fehlersuchleitfaden.
Schnellprüfcheckliste
Laufen Sie diese vor der Verfolgung eines bestimmten Fehlers:
bunx cap doctor # Capacitor, CLI and plugin versions should match
node -v # 22 or later for Capacitor 8
xcodebuild -version # 26.x
xcode-select -p # should point to the Xcode you expect
bun run build && bunx cap sync ios
- Versions:
@capacitor/core,@capacitor/iosund@capacitor/climüssen dieselbe Hauptversion haben. Andernfalls treten ungewöhnliche Kompilations- und Laufzeitfehler auf. Siehe fixen Sie Capacitor Versionsmangelsfehler. - Einer Xcode: wenn Sie mehrere Xcode-Versionen haben,
xcode-select -pentscheidet, welches der CLI verwendet. Korrigieren Sie es mitsudo xcode-select -s /Applications/Xcode.app. - Welcher Paketmanager: wenn
ios/App/CapApp-SPMexistiert, verwendet das Projekt SPM. Wennios/App/Podfileexistiert, verwendet es CocoaPods.
Fehler im Toolchain
Xcode oder SDK zu alt
Symptome: value of type 'WKWebView' has no member 'isInspectable', Fehler in der Swift-Syntax innerhalb Capacitor, oder compiling for iOS 15.0, but module 'X' has a minimum deployment target of iOS 16.0.
Capacitor 8 erfordert Xcode 26. In GitHub Actions macos-latest Dein Runner-Image zeigt nicht immer die neueste Xcode-Version an. Pinne ein Bild, das Xcode 26 enthält, und wähle es explizit aus:
- run: sudo xcode-select -s /Applications/Xcode_26.0.app
Überprüfe die Dokumentation zum Runner-Image für den genauen Pfad. Für das Modul-Minimum-Fehler, hebe die Zielplattform deiner App auf die des Plugins an, oder verwende eine ältere Plugin-Version.
ITMS-90725: SDK version issue bei der Upload
Die App wurde mit einem SDK erstellt, das Apple nicht mehr akzeptiert. Seit dem 28. April 2026 müssen Uploads mit Xcode 26 und dem iOS 26 SDK erstellt werden. Siehe Apple's Xcode 26-Anforderung für Capacitor-Apps. Capgo-Build bereits mit Xcode 26 baut, wenn du Mac-Runner nicht pflegen möchtest
Swift Package Manager Fehler
Missing package product 'CapApp-SPM'
Xcode konnte die lokale Pakete nicht auflösen oder sein Cache ist veraltet.
- Datei > Pakete > Paket-Caches zurücksetzen.
- Datei > Pakete > Paketversionen auflösen.
- Wenn die App von CocoaPods migriert wurde, überprüfen Sie, ob
CapApp-SPMwird unter dem Projekt hinzugefügt Paketabhängigkeiten Kachel ist und auf die App-Ziel verlinkt ist.
product 'X' required by package 'capapp-spm' target 'CapApp-SPM' not found
Eine Plugin- Package.swift verwendet ein Paket oder Produktname, der nicht mit dem, was Capacitor CLI aus seinem npm-Name generiert hat, übereinstimmt. Dies ist ein Plugin-Bug. Aktualisieren Sie das Plugin oder es patchen. Plugin-Autoren finden die Namensregel in einen Capacitor-Plugin auf SPM umstellen.
“Einige installierte Capacitor-Plugins sind nicht mit SPM kompatibel”
Dieser Warnhinweis während cap sync bedeutet, dass mindestens ein Plugin keine Package.swift. It’s left out of the app, so calls to it fail with “not implemented”. Upgrade the plugin, replace it with one that supports SPM, or nutzen Sie CocoaPods für den Moment.
Doppelte Paketidentität oder Zielname
Zwei Plugins teilen eine Paketidentität oder einen Zielnamen (oft einen allgemeinen Namen wie PluginSeit CLI 8.4 können Sie es von der Capacitor-Konfiguration aus beheben:
const config: CapacitorConfig = {
// ...
experimental: {
ios: {
spm: {
packageOptions: {
'@acme/capacitor-foo': { symlink: true },
'@acme/capacitor-bar': { moduleAliases: { Plugin: 'AcmeBarPlugin' } },
},
},
},
},
};
symlink macht den CLI-Verweis auf das Plugin durch einen Symbolverweis auf einen eindeutigen Pfad. moduleAliases umbenennen Sie einen konfligierenden Modul für diese Abhängigkeit. Melden Sie den Konflikt auch upstream.
Bearbeiten nicht CapApp-SPM/Package.swift
Die CLI übernimmt es bei jedem Synchronisieren neu. Lokale Änderungen verschwinden. Verwenden Sie experimental.ios.spm Konfigurationsoptionen anstelle.
CocoaPods-Fehler
No such module 'Capacitor'
Sie haben geöffnet App.xcodeproj anstatt von App.xcworkspace. Use bunx cap open iosWenn das Workspace geöffnet ist und das Problem weiterhin besteht, führen Sie bunx cap sync ios Zwei Ursachen:
CocoaPods could not find compatible versions for pod "X"
Zwei Ursachen:
- : führen Sie : run
cd ios/App && pod install --repo-update. - Konkurrierende Pins: zwei Plugins benötigen inkompatible Versionen des gleichen Pods. Die Fehlermeldung gibt die Kette an. Aktualisieren Sie das Plugin mit strenger Pin-Option, passen Sie die Versionen an (für Firebase, halten Sie alle Firebase-Plugins auf der gleichen SDK-Version), oder patchen Sie die Podspec.
Wenn es weiterhin scheitert, löschen Sie ios/App/Podfile.lock und ios/App/Pods, dann synchronisiere erneut. Dies aktualisiert auch alle Pods, teste daher danach.
The sandbox is not in sync with the Podfile.lock
Laufen bunx cap sync iosEs tritt nach Switches von Branchen oder teilweisen Installationen auf.
Unable to find compatibility version string for object version '70'
Your project.pbxproj benutzt eine Formatierung, die Ihre CocoaPods-Version nicht lesen kann. Aktualisieren Sie CocoaPodsbrew upgrade cocoapods bump es in deinem GemfileAls letzte Möglichkeit das Datei sichern und auf niedrigem Level objectVersion.
Sandbox: rsync(...) deny(1) file-write-create
Xcode-Skript-Sandboxing blockiert das CocoaPods-Framework-embed-Skript. Setze Einstellungen > Benutzerskript-Isolierung zu Nein auf dem App-Ziel.
could not find module 'Capacitor' for target 'x86_64-apple-ios-simulator'
Die Simulator-Build-Ausführung läuft für Intel. Auf Apple Silicon bedeutet dies normalerweise, dass Xcode unter Rosetta oder einem alten EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 Die Einstellung wurde von einer alten Workaround übernommen. Führen Sie Xcode natively aus, entfernen Sie diese Einstellung aus dem App-Ziel und aus post_install Hook, dann bereinigen und neu erstellen.
Kompilierungsfehler
Command PhaseScriptExecution failed with a nonzero exit code
Dies ist ein Wrapper. Erweitern Sie die fehlgeschlagene Build-Phase im Report-Navigator und lesen Sie die Skriptausgabe. Häufige Ursachen in Capacitor-Apps:
- Eine Ausführung von Skripten benötigt
nodeund Xcode kann es nicht finden, weil Xcode Ihr Shell-Profil nicht lädt und Node mit nvm, fnm oder Volta installiert ist. Geben Sie den vollständigen Pfad zunodeim Skript an oder exportieren SiePATHam Anfang von ihm. - Ein Upload-Script für Fehlerberichte (Sentry, Crashlytics) fehlt in CI die Anmeldeinformationen.
- CocoaPods-Embed-Script wird durch Benutzerskript-Sandboxing blockiert (siehe oben).
'X' is only available in iOS 16.0 or newer
Eine Erweiterung verwendet ein API über Ihrer Zielplattform. Erhöhen Sie die Zielplattform in Xcode, in der Podfile (platform :ios, '16.0') wenn Sie CocoaPods verwenden, und überprüfen Sie die README der Erweiterung für ihr Minimum.
Swift 6-Konkurrenzfehler in einer Erweiterung
Nachrichten wie Sending 'x' risks causing data races erscheinen, wenn eine Erweiterung oder Ihr App-Ziel die Swift 6-Sprachmodus verwendet. Capacitor 8 unterstützt Swift 6 nicht offiziell. Halten Sie die App-Ziel auf Swift 5-Sprachmodus, bis die Erweiterung aktualisiert ist.
Code-Signierung
Signing for "App" requires a development team
Öffnen App-Ziel > Signierung und -Fähigkeiten und wählen Sie ein Team. In CI, übergeben Sie DEVELOPMENT_TEAM zu xcodebuild oder verwenden Sie ein Signierungstool. Wenn der Fehler einen Pod-Ressourcen-Bundle anstatt App erwähnt, deaktivieren Sie die Signierung für Bundle-Ziele im Podfile. post_install Hook.
Provisioning profile "X" doesn't include the ... entitlement
Sie haben eine Fähigkeit (Push-Benachrichtigungen, verbundene Domains, Anmeldung mit Apple) ohne Regeneration des Profils hinzugefügt. Aktivieren Sie sie im Apple-Entwickler-Portal auf der App-ID, dann aktualisieren Sie die Profile. Unser iOS-Zertifikatsgenerator hilft Zertifikate ohne Mac-Schüsselkette-Tanz zu erstellen, und der UDID-Finder hilft Testgeräte zu registrieren.
Unable to install "App" auf dem Gerät
Aktivieren Sie den Entwicklermodus auf dem Gerät (Einstellungen > Privatsphäre & Sicherheit > Entwicklermodus), vertrauen Sie dem Entwicklerzertifikat und stellen Sie sicher, dass die Geräte-UDID im Entwicklungsprofil für Entwicklungsbuilds enthalten ist.
Laufzeitfehler
"X" plugin is not implemented on ios
Die JavaScript-Seite fand keine native Implementierung. Überprüfen Sie in dieser Reihenfolge:
- Der Plugin ist in
package.jsonand you ranbunx cap sync iosnachdem Sie es installiert haben. - Für SPM: Der Plugin erscheint in
ios/App/CapApp-SPM/Package.swiftWenn nicht, hat es keinePackage.swift. - Für CocoaPods: Der Plugin erscheint in der
capacitor_podsBlock der Podfile undpod installkeine Warnungen gedruckt wurden. - Sie haben keine zwei Plugins, die denselben JS-Namen registrieren (zum Beispiel zwei Push-Benachrichtigungs-Plugins).
WKAppBoundDomainsist nicht inInfo.plist, oder wenn es ist,limitsNavigationsToAppBoundDomainsist gesetzt undlocalhostist aufgelistet. App-grenzennde Domains blockieren die Plugin-Script-Injektion ansonsten.- Reinige das Build-Ordner und baue neu. Veraltete Builds speichern alte Plugin-Registrierungen.
Leeres weißes Bildschirmfenster bei Start
Überprüfe den WebView mit Safari Web Inspector zuerst. Die meisten leeren Bildschirme sind ein JavaScript-Fehler.
- Falsch
webDir:capacitor.config.tszeigt auf ein Verzeichnis, das nicht enthältindex.htmlÜberprüfeios/App/App/public. - Ziel Build zu neu: Ihr Bundler emittiert Syntax, die älterer WebKit nicht unterstützt. iOS 15 ist das Minimum für Capacitor 8, also Ziel
safari15oder später in Vite/esbuild und überprüfe Ihrenbrowserslist. - Absolute Asset-Pfade: ein
baseSetze auf einen CDN oder Unterpfad in deiner Bundler-Konfiguration, um lokale Laden zu brechen. - Live reload nicht erreichbar: Der Entwicklungs-Server muss auf Ihrer LAN-IP lauschen (
--host 0.0.0.0), das Telefon muss sich auf derselben Netzwerk befinden und die App benötigt die Lokaler Netzwerk Zugriffsrechte (Einstellungen > Datenschutz & Sicherheit > Netzwerkzugriff). Entfernen Sieserver.urlaus der Konfiguration vor der Veröffentlichung. - Live update Paket ist beschädigt: Wenn die App OTA-Updates verwendet, kann ein beschädigtes Paket den Bildschirm leer lassen. Capgo’s Updater rollt automatisch zurück, wenn
notifyAppReady()nicht rechtzeitig aufgerufen wird. Siehe die Updater-Dokumentation.
Inhalt unter der Notch oder dem Home-Indikator
Hinzufügen viewport-fit=cover in Ihre Ansichts-Metatag und füllen Sie mit env(safe-area-inset-top) und env(safe-area-inset-bottom). Capacitor 8's System Bars-Plugin steuert die Statusleisten-Stil und -Sichtbarkeit auf beiden Plattformen.
Tastatur bedeckt Eingaben
Konfigurieren Sie die Tastatur-Plugin resize Modus (native, body, ionic oder none) und testen Sie auf einem echten Gerät. Simulatoren behandeln die Tastatur anders.
App Store Connect-Fehler
ITMS-91053: Missing API declaration: Ihr App oder ein Plugin verwendet ein erforderliches API ohne eine Eintragung in der Datenschutzmanifest. Fügen Sie einPrivacyInfo.xcprivacyzur App-Ziel mit den Gründen hinzu und aktualisieren Sie Plugins, die ihre eigenen Manifeste liefern.ITMS-90725: SDK version issue: mit Xcode 26 neu erstellen.Invalid Bundle. The bundle ... contains disallowed file 'Frameworks': Ein Framework ist in einer Erweiterung oder einem anderen Framework eingebettet. Überprüfen Sie Einbetten Einstellungen für App-Erweiterungen.
Wie man debuggt, wenn der Fehler nicht aufgelistet ist
- Safari Web-Inspector für JS-Fehler und Netzwerkaufrufe. Debug-Builds sind auf iOS 16.4+ überprüfbar. Für Release-Builds setzen Sie
ios.webContentsDebuggingEnabled: truetemporär. - Xcode-Konsolen für native Logs, einschließlich Capacitor’s
⚡️Brückenmeldungen, die jede Pluginaufruf anzeigt. - Terminal mit dem ausgewählten Gerät für Crash und Systemprotokollen.
- Isolieren: Erstellen Sie eine frische App mit
bun create @capacitor/app, fügen Sie nur den verdächtigen Plugin hinzu und sehen Sie, ob der Fehler reproduziert wird.
Das Ultimative Führer zum Debuggen von Capacitor Apps geht tiefer in jeden Tool ein. Wenn die Ursache ein Plugin-Bug ist, ist ein Patch wird normalerweise am schnellsten gelöst, während Sie auf eine neue Version warten.