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 workflow di rilascio JavaScript code, il progetto Android o da zero.
Questa guida è per i team 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
Un'app Capacitor basata su SPM sposta la gestione delle dipendenze iOS nel Swift Package Manager. Durante la migrazione, Capacitor crea un pacchetto locale chiamato CapApp-SPM e lo utilizza per collegare il target dell'app con Capacitor e le dipendenze native installate.
La costruzione web funziona sempre nello stesso modo. Rendi ancora una costruzione web, sincronizza Capacitor, apri Xcode e archivia l'app. La principale differenza è che CocoaPods non gestisce più il grafo delle dipendenze iOS.
Prima di migrare
Inizia da una branch pulita e assicurati che l'app corrente si costruisca prima di cambiare i gestori di dipendenze:
git status
npm run build
npx cap sync ios
Poi commetta 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/. I file comuni e le impostazioni 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- impostazioni personalizzate
.xcconfigfile - impostazioni di firma, identificatore di 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 di un'app può essere bloccata da una dipendenza nativa che non ha un percorso SPM compatibile. Aggiorna quei pacchetti prima di migrare quando possibile.
Utilizza 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. L'assistente elimina l'integrazione di CocoaPods, crea il locale CapApp-SPM pacchetto, genera riferimenti di pacchetto per le dipendenze native installate e aggiunge la configurazione generata necessaria al progetto iOS.
Dopo aver completato l'operazione, apri il progetto iOS:
npx cap open ios
Leggi l'output dell'assistente prima di chiudere il terminale. Se ti chiede di completare passaggi manuali in Xcode, esegui quelli prima di sincronizzare nuovamente.
Completa i passaggi di Xcode
In Xcode, controlla la configurazione del progetto e del target dell'app:
- Conferma
CapApp-SPMè aggiunto come dipendenza di pacchetto locale. - Conferma che il target dell'app collega i prodotti di pacchetto generati.
- Aggiungi il generato
debug.xcconfigalla configurazione del progetto se l'assistente ti chiede di farlo. - Risolve eventuali avvisi di pacchetto in Xcode.
- Costruisci l'app una volta da Xcode.
If Xcode non riesce a risolvere i pacchetti, utilizza File > Pacchetti > Reset Pacchetti di Cache, quindi risolvi nuovamente i pacchetti.
Aggiorna e costruisci nuovamente
Dopo aver configurato Xcode, torna al terminale e sincronizza Capacitor:
npx cap sync ios
Poi costruisci nuovamente da Xcode. Non considerare la migrazione completa 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ì.
Se l'app utilizza le notifiche push, i domini associati, i modi di background, i gruppi dell'app, Firebase o qualsiasi configurazione nativa SDK, esegui quei flussi su un simulatore o dispositivo dopo che il costruzione riesce.
Alternativa: ricrea l'iOS con SPM
Se il tuo ios/ cartella è vicino al modello di default Capacitor, può essere più veloce ricrearla con SPM invece di migrare in loco.
Usa questa opzione solo 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. Questa opzione ti dà un progetto SPM pulito, ma è più facile perdere le modifiche Xcode personalizzate se non hai inventariato le modifiche prima di procedere.
For nuove Capacitor applicazioni, Capacitor 8 crea progetti iOS con SPM di default:
npx cap add ios
È ancora possibile essere espliciti:
npx cap add ios --packagemanager SPM
Pulisci i residui di CocoaPods
Dopo l'applicazione SPM, elimina le ipotesi residue di CocoaPods dai script locali e CI.
Elimina passaggi come:
pod install
Elimina anche le cache che esistevano solo per CocoaPods:
ios/App/Podsios/App/Podfile.lock- Repository dei spec CocoaPods
- Chiavi di cache CI basate sul Podfile
Un flusso CI di base dopo la migrazione 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 ancora costruisce App.xcworkspace, aggiornalo al percorso del progetto o del workspace che esiste dopo la migrazione. Non conservare percorsi CocoaPods vecchi solo perché l'antico lavoro li utilizzava.
Risoluzione dei problemi
La assistente avverte di una dipendenza 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 per 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 fallisce il CI
Cerca vecchie ipotesi di CocoaPods: pod install, Pods/ cache, Podfile.lock chiavi di cache o comandi di costruzione che puntano a un file eliminato .xcworkspace.
Il certificato o le autorizzazioni sono stati modificati
Confronta il target Xcode migrato con il progetto pre-migrazione. Ripristina l'identificatore del bundle, l'equipe, il profilo di provisioning, il file delle autorizzazioni, le capacità e le impostazioni dell'estensione.
Elenco di migrazione
Prima della migrazione:
- Crea una branca.
- Conferma che l'app iOS corrente compila.
- Comita lo stato di lavoro.
- Inventario file nativi personalizzati e impostazioni di firma.
- Aggiorna le dipendenze native che già hanno 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 avvertimenti sui pacchetti.
- Esegui
npx cap sync ios.
Dopo la migrazione:
- Costruisci l'applicazione da Xcode.
- Testa le capacità native su un simulatore o dispositivo.
- Elimina comandi di CocoaPods dal CI.
- Elimina cache di CocoaPods esclusivi.
- Verifica la firma di archiviazione e rilascio.
Utilizza Capgo Competenze per la migrazione
Se utilizzi agenti AI per gestire la migrazione, inizia da Capgo Competenze al posto di una richiesta vuota. Le competenze 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 e di follow-up di Xcode.capacitor-ci-cdedebugging-capacitorper investigare problemi di dispositivo solo dopo la migrazione.ios-android-logsUtilizzatele 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 __CAPGO_KEEP_0__ a Swift Package Manager è principalmente un cambiamento di gestione delle dipendenze per iOS. Il percorso più sicuro è iniziare da una branch pulita, eseguire
Migrating a Capacitor app to Swift Package Manager is mostly an iOS dependency-management change. The safest path is to start from a clean branch, run npx cap spm-migration-assistantSe il tuo progetto iOS è fortemente personalizzato, migra in loco. Se è vicino al modello di base __CAPGO_KEEP_0__ , ricrea
If your iOS project is heavily customized, migrate in place. If it is close to the default Capacitor template, recreating ios/ con npx cap add ios --packagemanager SPM può essere più pulito.