Swift Package Manager è la direzione predefinita per i progetti Capacitor iOS. Se il tuo app utilizza ancora CocoaPods, puoi migrare l'app stessa a SPM senza ricostruire il tuo progetto JavaScript code, il progetto Android o il flusso di rilascio da zero.
Questa guida è per le squadre di app. Spiega come migrare un'app Capacitor iOS da CocoaPods a SPM, cosa cambia l'assistente di migrazione, cosa devi ancora controllare in Xcode e come pulire CI dopo che l'app è stata costruita.
Cosa cambia nell'app
Un'app Capacitor basata su CocoaPods dipende da file come:
ios/App/Podfileios/App/Podfile.lockios/App/Pods/ios/App/App.xcworkspace
An SPM-based Capacitor app moves iOS dependency wiring into Swift Package Manager. During migration, Capacitor creates a local package named CapApp-SPM and uses it to connect the app target with Capacitor and installed native dependencies.
The web build still works the same way. You still run a web build, sync Capacitor, open Xcode, and archive the app. The main difference is that CocoaPods no longer owns the iOS dependency graph.
Prima di migrare
Inizia da una branch pulita e assicurati che l'app corrente si compili prima di modificare i gestori di dipendenze:
git status
npm run build
npx cap sync ios
Poi commetti lo stato di lavoro. La migrazione tocca i file di progetto iOS generati, quindi avere un punto di rollback pulito è importante.
Successivamente, esamina cosa il tuo app ha personalizzato sotto ios/App/Il file e le impostazioni comuni da preservare includono:
App/Info.plistApp/AppDelegate.swiftApp/SceneDelegate.swift, se presenteApp/Assets.xcassets/App/Base.lproj/App/App.entitlementsApp/GoogleService-Info.plist, se utilizzi Firebase- file personalizzati
.xcconfigfile - impostazioni di firma, identificatore bundle, ID team e profili di provisioning
- estensioni dell'app, file Swift nativi, file Objective-C o framework incorporati
Controlla anche le tue dipendenze installate Capacitor e Cordova. Una migrazione SPM dell'app può essere bloccata da una dipendenza nativa che non ha un percorso SPM compatibile. Aggiorna quei pacchetti prima di migrare quando possibile.
Usa l'assistente di migrazione
Per la maggior parte delle app esistenti, inizia con l'assistente di migrazione ufficiale Capacitor:
npx cap spm-migration-assistant
Eseguilo dalla radice del tuo progetto Capacitor Capacitor. L'assistente elimina l'integrazione di CocoaPods, crea il pacchetto locale, genera riferimenti di pacchetto per le dipendenze native installate e aggiunge la configurazione generata necessaria al progetto iOS. CapApp-SPM Dopo che si è concluso, apri il progetto iOS:
Leggi l'output dell'assistente prima di chiudere il terminale. Se ti chiede di completare passaggi manuali in Xcode, esegui quei passaggi prima di sincronizzare nuovamente.
npx cap open ios
Completa i passaggi di Xcode
In Xcode, controlla la configurazione del progetto e del target dell'app:
Conferma
- Verifica
CapApp-SPMè aggiunto come dipendenza di pacchetto locale. - Conferma che i collegamenti dell'app di destinazione si collegano ai prodotti dei pacchetti generati.
- Aggiungi i generati
debug.xcconfigalla configurazione del progetto se l'assistente chiede di farlo. - Risolve eventuali avvisi di pacchetto in Xcode.
- Costruisci l'app una volta da Xcode.
Se Xcode non riesce a risolvere i pacchetti, utilizza File > Pacchetti > Reset Cache dei Pacchetti, quindi risolvi i pacchetti nuovamente.
Sincronizza e costruisci nuovamente
Dopo che Xcode è configurato, torna al terminale e sincronizza Capacitor:
npx cap sync ios
Poi costruisci nuovamente da Xcode. Non considera la migrazione come completata fino a quando un costruzione pulita funziona da Xcode, perché la firma di rilascio, le autorizzazioni, le estensioni dell'app e la risoluzione dei pacchetti sono validate lì.
If l'applicazione utilizza le notifiche push, i domini associati, i modi di background, i gruppi di app, Firebase o qualsiasi configurazione nativa SDK, esegui quei flussi su un simulatore o dispositivo dopo che il build ha avuto successo.
Alternativa: ricrea l'iOS con SPM
Se il tuo ios/ cartella è vicina alla cartella di default Capacitor, può essere più veloce ricrearla con SPM invece di migrare in loco.
Usa solo questo percorso dopo aver commesso o fatto un backup di ogni file e impostazione di firma nativa che hai bisogno:
rm -rf ios
npx cap add ios --packagemanager SPM
npx cap sync ios
npx cap open ios
Poi ripristina i file e le impostazioni native specifiche dell'app. Questo percorso ti dà un progetto SPM pulito, ma è più facile perdere le modifiche personalizzate di Xcode se non hai inventariato le modifiche prima.
Per le nuove Capacitor applicazioni, Capacitor 8 crea i progetti iOS con SPM di default:
npx cap add ios
Puoi ancora essere esplicito:
npx cap add ios --packagemanager SPM
Pulisci i residui di CocoaPods
Dopo che l'app SPM è stata costruita, elimina le supposizioni residue di CocoaPods dai script locali e da CI.
Elimina passaggi come:
pod install
Elimina anche le cache che esistevano solo per CocoaPods:
ios/App/Podsios/App/Podfile.lock- Repository spec CocoaPods
- Le chiavi di cache CI sono basate sul Podfile
Dopo la migrazione, il flusso CI base dovrebbe installare le dipendenze JavaScript, costruire l'app web, sincronizzare Capacitor, e costruire con Xcode:
npm ci
npm run build
npx cap sync ios
Se il tuo CI continua a costruire App.xcworkspace, aggiornalo al percorso del progetto o del workspace che esiste dopo la migrazione. Non tenere i percorsi CocoaPods obsoleti solo perché l'antico lavoro li utilizzava.
Risoluzione dei problemi
L'assistente avverte di un'interdipendenza incompatibile
Aggiorna la dipendenza prima di eseguire nuovamente l'assistente. Se non esiste una versione compatibile con SPM, mantieni l'applicazione su CocoaPods fino a quando non sostituisci quella dipendenza o il mantenitore aggiunge il supporto SPM.
Xcode non risolve i pacchetti
Ripristina le cache dei pacchetti in Xcode, assicurati che CapApp-SPM sia presente come pacchetto locale, e esegui npx cap sync ios nuovamente.
L'applicazione si costruisce localmente ma il CI fallisce
Cercare vecchie assunzioni di CocoaPods: pod install, Pods/ cache, Podfile.lock chiavi di cache, .xcworkspace.
o comandi di costruzione che puntano a un file eliminato
Le firme o le autorizzazioni sono state modificate
Confronta il target Xcode migrato con il progetto pre-migrazione. Ripristina l'identificatore del pacchetto, l'equipe, il profilo di provisioning, il file delle autorizzazioni, le capacità e le impostazioni dell'estensione.
Elenco dei controlli di migrazione
- Prima della migrazione:
- Creare una branca.
- Conferma che l'applicazione iOS corrente si costruisce.
- Commetti lo stato di lavoro attuale. Inventario file nativi personalizzati e impostazioni di firma.
- Aggiorna le dipendenze native che già dispongono di rilasci più recenti compatibili con SPM.
Durante la migrazione:
- Esegui
npx cap spm-migration-assistant. - Apri il progetto con
npx cap open ios. - Aggiungi
CapApp-SPMin Xcode se richiesto. - Aggiungi
debug.xcconfigin Xcode se richiesto. - Risolve avvisi di pacchetto.
- Esegui
npx cap sync ios.
Dopo la migrazione:
- Costruisci l'applicazione da Xcode.
- Testare le capacità native su un simulatore o dispositivo.
- Eliminare le istruzioni di CocoaPods dal CI.
- Eliminare i cache esclusivi di CocoaPods.
- Verificare la firma di archiviazione e rilascio.
Usare Capgo abilità per la migrazione
Se utilizzi agenti AI per gestire la migrazione, inizia da Capgo abilità invece di una richiesta vuota. Le abilità più utili per questo lavoro sono:
capacitor-best-practicesper esaminare la struttura dell'app prima di apportare modificheios/.cocoapods-to-spmper pianificare i passaggi di migrazione dello SPM e i passaggi di follow-up di Xcode.capacitor-ci-cdper eliminare le assunzioni di CocoaPods dai flussi di costruzione.debugging-capacitoreios-android-logsTo esplorare gli issue relativi solo ai dispositivi dopo la migrazione.
Utilizzarli prima di modificare il progetto iOS in modo che l'agente esamini i file nativi, CI e compatibilità delle dipendenze al posto di eseguire solo il comando di migrazione.
Conclusioni
Migrare un'app Capacitor a Swift Package Manager è principalmente un cambiamento di gestione delle dipendenze iOS. Il percorso più sicuro è iniziare da una branch pulita, eseguire npx cap spm-migration-assistantconcludere i passaggi manuali di Xcode, sincronizzare nuovamente e rimuovere CocoaPods dal CI solo dopo che l'app è stata costruita.
Se il tuo progetto iOS è fortemente personalizzato, migra in loco. Se è vicino al modello di default Capacitor , ricreare ios/ con npx cap add ios --packagemanager SPM potrebbe essere più pulito.