Allez directement au contenu principal
Tutoriel

Comment migrer votre application Capacitor vers Swift Package Manager

Découvrez comment déplacer une application iOS existante Capacitor de CocoaPods vers Swift Package Manager avec l'assistant de migration officiel, les vérifications Xcode et la mise à jour de la CI.

Martin Donadieu

Martin Donadieu

Spécialiste du contenu

Comment migrer votre application Capacitor vers Swift Package Manager

Le gestionnaire de packages Swift est la direction par défaut pour les projets iOS Capacitor. Si votre application utilise toujours CocoaPods, vous pouvez migrer l'application elle-même vers SPM sans reconstruire votre projet JavaScript code, votre projet Android ou votre flux de publication de l'application.

Cette guide est destiné aux équipes d'applications. Il explique comment migrer une application iOS Capacitor de CocoaPods vers SPM, ce que change l'assistant de migration, ce que vous devez toujours vérifier dans Xcode et comment nettoyer CI après que l'application a construit.

Quels changements dans l'application

A CocoaPods-based Capacitor app depends on files such as:

  • ios/App/Podfile
  • ios/App/Podfile.lock
  • ios/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 et utilise-le pour relier la cible de l'application avec Capacitor et les dépendances natives installées.

La construction web fonctionne toujours de la même manière. Vous pouvez toujours exécuter une construction web, synchroniser Capacitor, ouvrir Xcode et archiver l'application. La principale différence est que CocoaPods ne possède plus le graphique de dépendances iOS.

Avant de migrer

Commencez d'une branche propre et assurez-vous que l'application fonctionne avant de modifier les gestionnaires de dépendances :

git status
npm run build
npx cap sync ios

Ensuite, commitez l'état de travail. La migration touche les fichiers de projet iOS générés, il est donc important d'avoir un point de rebond propre.

Ensuite, passez en revue ce que votre application a personnalisé sous ios/App/Les fichiers et les paramètres courants à conserver incluent :

  • App/Info.plist
  • App/AppDelegate.swift
  • App/SceneDelegate.swift, si présent
  • App/Assets.xcassets/
  • App/Base.lproj/
  • App/App.entitlements
  • App/GoogleService-Info.plist, si vous utilisez Firebase
  • personnalisé .xcconfig fichiers
  • paramètres de signature, identifiant de l'application, ID d'équipe et profils de provisionnement
  • extensions d'application, fichiers Swift natifs, fichiers Objective-C ou frameworks intégrés

Vérifiez également vos dépendances Capacitor et Cordova installées. Une migration de niveau d'application SPM peut être bloquée par une dépendance native qui n'a pas de chemin compatible SPM. Mettez à jour ces packages avant de migrer lorsque possible.

Utilisez l'assistant de migration

Pour la plupart des applications existantes, commencez par l'assistant de migration officiel Capacitor :

npx cap spm-migration-assistant

Exécutez-le depuis la racine de votre projet Capacitor . L'assistant supprime l'intégration CocoaPods, crée le package local, génère des références de package pour les dépendances natives installées et ajoute la configuration générée nécessaire par le projet iOS. CapApp-SPM Après qu'il ait terminé, ouvrez le projet iOS :

protectedTokens

npx cap open ios

Lisez l'output de l'assistant avant de fermer votre terminal. Si il vous demande de compléter des étapes manuelles Xcode, faites-les avant de synchroniser à nouveau.

Terminer les étapes Xcode

Dans Xcode, vérifiez la configuration du projet et de la cible de l'application :

  1. Confirmer CapApp-SPM est ajouté comme une dépendance de package local.
  2. Confirmer que la cible de l'application relie les produits de package générés.
  3. Ajouter le debug.xcconfig à la configuration du projet si l'assistant vous le demande.
  4. Résoudre les avertissements de package dans Xcode.
  5. Construire l'application une fois depuis Xcode.

Si Xcode ne peut pas résoudre les packages, utilisez Fichier > Packages > Réinitialiser les caches de packageRésolvez à nouveau les packages.

Sync et construisez à nouveau

Après la configuration de Xcode, retournez au terminal et synchronisez Capacitor:

npx cap sync ios

Construisez ensuite à partir de Xcode à nouveau. N'oubliez pas que la migration n'est pas terminée tant que la construction propre fonctionne à partir de Xcode, car la signature de version de sortie, les autorisations, les extensions d'applications, et la résolution des packages sont validées là.

Si l'application utilise des notifications push, des domaines associés, des modes de fond, des groupes d'applications, Firebase, ou toute configuration native SDK, exécutez ces flux sur un simulateur ou un appareil après que la construction réussisse.

Alternative : recréez iOS avec SPM

Si votre ios/ dossier est proche du modèle par défaut Capacitor, il peut être plus rapide de le recréer avec SPM au lieu de migrer en place.

Utilisez uniquement cette voie après avoir commit ou sauvegardé chaque fichier et paramètre de signature natif que vous avez besoin :

rm -rf ios
npx cap add ios --packagemanager SPM
npx cap sync ios
npx cap open ios

Construisez ensuite vos fichiers et paramètres d'application natifs. Cette voie vous donne un projet SPM propre, mais il est plus facile de perdre des modifications Xcode personnalisées si vous n'avez pas inventorié les modifications avant.

Pour de nouvelles applications Capacitor, Capacitor 8 crée des projets iOS avec SPM par défaut :

npx cap add ios

Vous pouvez toujours être explicite :

npx cap add ios --packagemanager SPM

Nettoyer les débris de CocoaPods

Après la construction de l'application SPM, supprimez les hypothèses de CocoaPods restantes des scripts locaux et CI.

Supprimer les étapes comme :

pod install

Supprimez également les caches qui n'existaient que pour CocoaPods :

  • ios/App/Pods
  • ios/App/Podfile.lock
  • Les dépôts de spécifications CocoaPods
  • Les clés de cache CI basées sur le fichier Podfile

Un flux CI de base après migration devrait installer les dépendances JavaScript, construire l'application web, synchroniser Capacitor, et construire avec Xcode :

npm ci
npm run build
npx cap sync ios

Si votre CI construit toujours App.xcworkspace, mettez à jour pour le chemin du projet ou du dossier de travail qui existe après la migration. N'entretenez pas les chemins de CocoaPods obsolètes juste parce que l'ancien job les utilisait.

Résolution des problèmes

Le conseiller avertit d'une dépendance incompatible

Mettez à jour la dépendance en premier et exécutez le conseiller à nouveau. Si aucune version SPM compatible n'existe, maintenez l'application sur CocoaPods jusqu'à ce que vous remplacez cette dépendance ou que le mainteneur ajoute la prise en charge SPM.

Xcode ne peut pas résoudre les packages

Réinitialisez les caches de packages dans Xcode, assurez-vous que CapApp-SPM est présent en tant que package local, et exécutez npx cap sync ios à nouveau.

L'application se construit localement mais la CI échoue

Recherchez les anciennes hypothèses de CocoaPods : pod install, Pods/ caches, Podfile.lock clés de cache ou commandes de construction qui pointent vers un fichier supprimé .xcworkspace.

Les paramètres de signature ou d'autorisation ont changé

Comparez la cible Xcode migrée avec le projet avant migration. Restaurez l'identifiant de l'application, l'équipe, le profil de provisionnement, le fichier d'autorisations, les capacités et les paramètres d'extension.

Liste de vérification de migration

Avant la migration :

  • Créer une branche.
  • Confirmer la construction actuelle de l'application iOS.
  • Valider l'état de travail.
  • Inventorier les fichiers natifs personnalisés et les paramètres de signature.
  • Mettre à jour les dépendances natives qui ont déjà des versions plus récentes compatibles avec SPM.

Pendant la migration :

  • Exécuter npx cap spm-migration-assistant.
  • Ouvrir le projet avec npx cap open ios.
  • Ajouter CapApp-SPM en Xcode si nécessaire.
  • Ajouter debug.xcconfig en Xcode si nécessaire.
  • Résolvez les avertissements de package.
  • Exécutez npx cap sync ios.

Après migration :

  • Construirez l'application à partir de Xcode.
  • Testez les capacités natives sur un simulateur ou un appareil.
  • Supprimez les commandes CocoaPods de CI.
  • Supprimez les caches CocoaPods uniquement.
  • Vérifiez l'archivage et la signature de la version de production.

Utilisez Capgo compétences pour la migration

Si vous utilisez des agents AI pour gérer la migration, commencez par Capgo compétences au lieu d'une prompt vide. Les compétences les plus utiles pour ce travail sont :

  • capacitor-best-practices examiner la structure de l'application avant de la modifier ios/.
  • cocoapods-to-spm planifier les étapes de migration de SPM et de suivi de Xcode.
  • capacitor-ci-cd enlever les hypothèses de CocoaPods des pipelines de construction.
  • debugging-capacitor et ios-android-logs investiguer les problèmes de dispositif uniquement après la migration.

Utilisez-les avant de modifier le projet iOS afin que l'agent audit les fichiers natifs, CI et compatibilité de dépendances au lieu de seulement exécuter la commande de migration.

Conclusion

La migration d'une application Capacitor vers le gestionnaire de packages Swift est principalement une modification de la gestion des dépendances iOS. Le chemin le plus sûr est de commencer d'une branche propre, exécuter npx cap spm-migration-assistant, terminer les étapes manuelles de Xcode, synchroniser à nouveau et supprimer CocoaPods du CI uniquement après que l'application se construit.

Si votre projet iOS est fortement personnalisé, migrez en place. Si il est proche du modèle de base Capacitor , recréer ios/ avec npx cap add ios --packagemanager SPM peut être plus propre.

Ressources

Mises à jour en direct pour les applications Capacitor

Lorsqu'un bug de couche web est en direct, expédiez la correction à travers Capgo au lieu d'attendre des jours pour l'approbation de l'app store. Les utilisateurs obtiennent la mise à jour en arrière-plan tandis que les changements natifs restent dans la voie de revue normale.

Commencez maintenant

Dernières actualités de notre blog

Capgo vous offre les meilleures informations nécessaires pour créer une application mobile véritablement professionnelle.