Capacitor 8 erstellt neue iOS-Projekte mit Swift Package Manager (SPM) standardmäßig. Bestehende Apps, die CocoaPods noch verwenden, können sich ebenfalls migrieren, aber der sichere Weg hängt davon ab, wie viel native iOS-Anpassung Ihre App hat.
Diese Anleitung führt durch die Änderungen, die Sicherung von Daten und die beiden praktischen Migrationen: die Verwendung des Capacitor-Migrationsassistenten oder die Neukonfiguration des iOS-Projekts mit SPM.
Warum migrieren Sie jetzt
CocoaPods ist auf dem Weg, den Hauptzweig zu einem lesenden Trunk zu machen. Der aktuelle Plan ist, dass der CocoaPods-Trunk ab dem Dezember 2, 2026keine neuen Podspezifikationen mehr akzeptieren wird. Bestehende Builds sollten weiterhin funktionieren, aber neue Releases und Abhängigkeitsaktualisierungen, die auf den Trunk verweisen, werden dort nicht mehr veröffentlicht.
SPM ist auch die Richtung, in die Capacitor sich bewegt. Capacitor unterstützt seit Capacitor 6 die Auswahl zwischen CocoaPods und SPM, und Capacitor 8 erstellt nun iOS-SPM-Projekte als Standardtemplate.
Was ändert sich in einem Capacitor-SPM-Projekt
Die Migration von CocoaPods zu SPM ersetzt die iOS-Abhängigkeitslayer. Die Web-App, das Android-Projekt und die meisten Capacitor-Workflow-Befehle bleiben unverändert.
CapApp-SPM ersetzt das Podfile
In einer CocoaPods-App werden iOS-Abhängigkeiten über ios/App/Podfile, Podfile.lock, Pods/, und die generierten .xcworkspace.
In einer SPM-Anwendung erstellt Capacitor eine lokale Paketdatei mit dem Namen CapApp-SPM. Diese Paketdatei wird zum zentralen Ort, an dem Capacitor auf Ihre native iOS-Plugin-Abhängigkeiten verweist. Die Capacitor CLI wird CapApp-SPM wenn Sie Plugins synchronisieren, also behandeln Sie es als generierte Ausgabe und vermeiden es, es manuell zu bearbeiten.
debug.xcconfig ersetzt die Pods-Konfiguration
Die Migration-Assistentin erstellt auch eine generierte debug.xcconfig. Diese Datei enthält Build-Einstellungen, die CocoaPods früher durch ihre generierten xcconfig-Dateien bereitstellte.
Nach der Migration müssen Sie möglicherweise debug.xcconfig zum Xcode-Projekt-Konfiguration hinzufügen, wenn der Assistent Ihnen dazu auffordert.
Jeder Plugin muss SPM unterstützen
Sie können CocoaPods und SPM nicht in demselben Capacitor iOS-Projekt kombinieren. Bevor Sie migrieren, überprüfen Sie alle Capacitor und Cordova-Plugins in package.json.
Wenn ein Plugin SPM noch nicht unterstützt, aktualisieren Sie es, ersetzen Sie es oder migrieren Sie das Plugin zuerst. Simple Swift-Plugins können oft mit Ionic’s capacitor-plugin-converterumgewandelt werden, aber Plugins mit komplexeren Objective-C- und Swift-Layouts benötigen möglicherweise manuelle Arbeit.
Was zuerst sichern
Starten Sie von einem sauberen Git-Branch und committen Sie Ihren aktuellen Zustand, bevor Sie das iOS-Projekt anfassen. Dann listen Sie die native Dateien auf, auf die Ihre App angewiesen ist.
Gemeinsame Dateien, die Sie aufbewahren sollten ios/App/ include: __CAPGO_KEEP_0__
App/Info.plistApp/AppDelegate.swiftApp/SceneDelegate.swift, wenn Ihre App eine hatApp/Assets.xcassets/App/Base.lproj/App/App.entitlementsApp/GoogleService-Info.plist, wenn Sie Firebase verwenden- Benutzerdefiniert
.xcconfigDateien - Zertifizierungseinstellungen, Bundle-Identifier, Team-ID und Provisioning-Profile-Einstellungen
Bewahren Sie auch alle native Swift-, Objective-C-, Framework-, Erweiterungs- oder SDK-Dateien auf, die Sie außerhalb des Standard-Capacitor-Templates hinzugefügt haben.
Option 1: Verwenden Sie den Capacitor-Migration-Assistenten
Verwenden Sie diesen Pfad, wenn Ihr iOS-Projekt benutzerdefinierte native Änderungen enthält, die Sie nicht verlieren möchten.
Führen Sie den Assistenten von der Wurzel Ihres Capacitor-Projekts aus:
bunx cap spm-migration-assistant
Der Assistent entfernt die CocoaPods-Infrastruktur, erstellt die lokale Paketdatei, generiert Paketverweise aus Ihren installierten Plugins und erstellt die generierten SPM-Konfigurationsdateien. CapApp-SPM Wenn es fertig ist, öffnen Sie das Projekt:
Folgen Sie dann den manuellen Xcode-Schritten, die der Assistent ausgibt. In den meisten Projekten bedeutet dies:
bunx cap open ios
Hinzufügen
- als lokale Paketabhaengigkeit.
CapApp-SPMHinzufügen der generierten - zur Anwendungs-Konfiguration.
debug.xcconfigBeheben Sie alle Warnungen über Plugins, die nicht in SPM umgewandelt werden konnten. - Bauen Sie die Anwendung aus Xcode einmal vor der Aktualisierung von CI.
- Nachdem die Xcode-Projektdatei erstellt wurde, synchronisieren Sie sich erneut:
Hinzufügen
bunx cap sync ios
Option 2: Das iOS-Projekt mit SPM neu aufbauen
Verwenden Sie diesen Pfad, wenn Ihr ios/ Verzeichnis sich in der Nähe der Standardvorlage Capacitor befindet und Sie die benutzerdefinierten Dateien sicher wiederherstellen können.
Stellen Sie zunächst sicher, dass die in der Sicherung aufgeführten Dateien committet oder an einem sicheren Ort kopiert wurden. Dann entfernen und erneut mit SPM das iOS-Projekt erstellen:
rm -rf ios
bunx cap add ios --packagemanager SPM
bunx cap sync ios
Die notwendigen native Dateien wiederherstellen, dann das Projekt öffnen:
bunx cap open ios
Dieser Pfad ist oft sauberer als eine in-Place-Migration, da er Ihnen ein frisches Capacitor 8 iOS-Vorlage gibt. Der Nachteil ist, dass Sie sorgfältig die Signierung, Berechtigungen, Firebase-Dateien, native Quellcode-Änderungen und beliebige benutzerdefinierte Xcode-Einstellungen wiederherstellen müssen.
Neue Capacitor Apps
Für ein neues App verwendet Capacitor 8 SPM standardmäßig, wenn Sie iOS hinzufügen:
bunx cap add ios
Wenn Sie explizit sein müssen, können Sie den Paket-Manager-Option immer noch übergeben:
bunx cap add ios --packagemanager SPM
CI nach der Migration aktualisieren
Einmal das App lokal gebaut, CI/CD aktualisieren, damit es nicht mehr CocoaPods annehmen sollte.
Schritte entfernen, die ausführen:
pod install
Entferne auch die Caches für:
ios/App/Podsios/App/Podfile.lock- CocoaPods-Speicher, wenn Ihr Workflow sie nur für diese App gecacht hat
Halten Sie Ihre reguläre Web-Ausgabe und Capacitor-Synchronisierungsschritte bei Lauf. Ein typischer iOS-Job sollte die JavaScript-Abhängigkeiten installieren, die Web-Ressourcen erstellen, Capacitor synchronisieren und dann mit Xcode bauen:
bun install --frozen-lockfile
bun run build
bunx cap sync ios
Migrationscheckliste
Vor der Migration:
- Erstellen Sie einen neuen Git-Zweig.
- Commiten Sie die aktuelle Arbeitsanwendung.
- Überprüfen Sie, ob jeder installierte Plugin SPM unterstützt.
- Führen Sie benutzerdefinierte iOS-Dateien und Signierungs-Einstellungen auf.
- Bestätigen Sie, dass die Anwendung vor der Migration gebaut wird.
Während der Migration:
- Ausführen
bunx cap spm-migration-assistantoder neu aufbauenios/. - Hinzufügen
CapApp-SPMin Xcode falls erforderlich. - Hinzufügen
debug.xcconfigin Xcode falls erforderlich. - App-spezifische native Dateien wiederherstellen.
- Ausführen
bunx cap sync ios.
Nach der Migration:
- Die App in Xcode erstellen und ausführen.
- Überbleibende CocoaPods-Dateien entfernen.
- Entfernen
pod installaus CI. - Überprüfen Sie, ob die Signatur der Veröffentlichung noch funktioniert.
- Bevor Sie das Produkt verschicken, sollten Sie das App auf mindestens einem Simulator und einem realen Gerät ausführen.
Fehlersuche
Wenn Xcode die Pakete nicht auflösen kann, stellen Sie die Paket-Caches von Xcode zurück und führen Sie das Skript erneut aus. bunx cap sync ios Wenn die Migration aufgrund eines Plugins scheitert, überprüfen Sie, ob das Plugin eine neue Version mit SPM-Unterstützung hat. Für Plugins, die Sie unterhalten, migrieren Sie das Plugin-Paket zuerst und kehren dann zur App-Migration zurück.
Wenn das App lokal kompiliert, aber die CI-Funktion fehlschlägt, überprüfen Sie alte CocoaPods-Ansätze. Häufige Ursachen sind ein gezwungener Build-Pfad, ein veralteter Befehl oder Caching aus vorherigen Builds.
Zusammenfassung .xcworkspace Die Migration eines __CAPGO_KEEP_0__-Apps zur Swift Package Manager ist hauptsächlich darum, die iOS-Abhängigkeits-Verkabelung zu ersetzen. pod install Troubleshooting Pods/ If Xcode cannot resolve packages, reset package caches from Xcode and run
again.
Migrating a Capacitor app to Swift Package Manager is mostly about replacing the iOS dependency wiring. CapApp-SPM übernimmt die Abhängigkeitsverweise debug.xcconfig ersetzt die generierte CocoaPods-Buildkonfiguration und CI benötigt es nicht mehr pod install.
Für benutzerdefinierte iOS-Projekte beginnen Sie mit bunx cap spm-migration-assistant. Für Projekte, die der Standardvorlage nahe kommen, ist eine saubere SPM-Wiederherstellung oft schneller und einfacher zu verstehen.
Ressourcen
- Capacitor Dokumentation zum Swift Package Manager
- Capacitor 8 Update-Leitfaden
- CocoaPods-Trunk-Lesezugriff-Plan
- capacitor-Plugin-Converter
Bleiben Sie bei How to Migrate a Capacitor App to Swift Package Manager
Wenn Sie How to Migrate a Capacitor App to Swift Package Manager für die Planung der Migration und Unternehmensoperationen, verbinden Sie es mit Capgo Enterprise für den Produktworkflow in Capgo Enterprise Alternativen zum Ionic Enterprise Plugin für den Produktworkflow in Alternativen zum Ionic Enterprise Plugin Capgo Alternativen für den Produktworkflow in Capgo Alternativen Capgo Consulting für den Produktworkflow in Capgo Consulting und Capgo Premium Support für den Produktworkflow in Capgo Premium Support