Aller directement au contenu principal
Tutorial

Comment migrer une application Capacitor vers le gestionnaire de packages Swift

Découvrez comment migrer une application iOS existante Capacitor de CocoaPods vers le gestionnaire de packages Swift, quels changements apporter à votre projet iOS et comment vérifier la migration.

Martin Donadieu

Martin Donadieu

Responsable de la création de contenu

Comment migrer une application Capacitor vers le gestionnaire de packages Swift

Capacitor 8 crée désormais de nouveaux projets iOS avec le gestionnaire de packages Swift (SPM) par défaut. Les applications existantes qui utilisent encore CocoaPods peuvent migrer également, mais la voie la plus sûre dépend de la quantité de personnalisation native iOS que votre application comporte.

Cette guide vous accompagne dans les changements à apporter, les éléments à sauvegarder et les deux chemins de migration pratiques : utiliser l'assistant de migration Capacitor ou restructurer le projet iOS avec SPM.

Pourquoi migrer maintenant

CocoaPods se tourne vers un tronc en lecture seule. Le plan actuel est que le tronc CocoaPods cesse d'accepter de nouvelles spécifications de pod le 2 décembre 2026. Les builds existants devraient continuer à fonctionner, mais les nouvelles publications et les mises à jour de dépendances qui dépendent du tronc ne seront plus publiées après le basculement.

SPM est également la direction que Capacitor est en train de prendre. Capacitor a soutenu la possibilité de choisir entre CocoaPods et SPM depuis Capacitor 6, et Capacitor 8 crée désormais des projets iOS SPM par défaut.

Quels changements dans un projet SPM Capacitor

La migration de CocoaPods vers SPM remplace la couche de dépendances iOS. L'application web, le projet Android et la plupart des commandes de flux de travail Capacitor restent les mêmes.

CapApp-SPM remplace le fichier Podfile

Dans une application CocoaPods, les dépendances iOS sont liées à travers ios/App/Podfile, Podfile.lock, Pods/, et le fichier généré .xcworkspace.

Dans une application SPM, Capacitor crée un package local nommé CapApp-SPM. Ce package devient le point central où Capacitor référence vos dépendances de plugins iOS natifs. Les Capacitor CLI sont mis à jour CapApp-SPM lorsque vous synchronisez les plugins, il faut donc les considérer comme des sorties générées et éviter de les modifier manuellement.

debug.xcconfig remplace la configuration Pods

L'assistant de migration crée également un fichier généré debug.xcconfigCe fichier contient les paramètres de construction que CocoaPods utilisait à l'origine pour fournir à travers ses fichiers xcconfig générés.

Après la migration, vous devrez peut-être ajouter debug.xcconfig à la configuration du projet Xcode si l'assistant vous le demande.

Chaque plugin doit supporter SPM

Vous ne pouvez pas mélanger CocoaPods et SPM dans le même Capacitor projet iOS. Avant de migrer, vérifiez chaque Capacitor et plugin Cordova dans package.json.

Si un plugin ne supporte pas encore SPM, mettez-le à jour, le remplacez ou migrez le plugin en premier. Les plugins Swift simples peuvent souvent être convertis avec Ionic’s capacitor-plugin-converter, mais les plugins avec des layouts Objective-C et Swift plus complexes peuvent nécessiter du travail manuel.

Qu'est-ce qu'il faut sauvegarder en premier

Commencez d'une branche Git propre et commitez votre état actuel avant de toucher le projet iOS. Ensuite, listez les fichiers natifs dont votre application a besoin.

Fichiers communs à conserver ios/App/ include :

  • App/Info.plist
  • App/AppDelegate.swift
  • App/SceneDelegate.swift, si votre application en a une
  • 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 paramètres de profil de provisionnement

Conservez également tout fichier natif Swift, Objective-C, framework, extension ou SDK que vous avez ajouté en dehors du modèle standard Capacitor.

Option 1 : Utilisez l'assistant de migration Capacitor

Utilisez ce chemin lorsque votre projet iOS a des éditions natives personnalisées que vous ne souhaitez pas perdre.

Exécutez l'assistant depuis la racine de votre projet Capacitor :

bunx cap spm-migration-assistant

L'assistant supprime l'infrastructure CocoaPods, crée le package local, génère les références de package à partir de vos plugins installés et crée les fichiers de configuration SPM générés. CapApp-SPM Option 2: Use the __CAPGO_KEEP_0__ migration assistant

Lorsqu'il est terminé, ouvrez le projet :

bunx cap open ios

Suivez ensuite les étapes manuelles Xcode imprimées par l'assistant. Dans la plupart des projets, cela signifie :

  1. Ajoutez CapApp-SPM comme une dépendance de package local.
  2. Ajoutez le généré debug.xcconfig à la configuration de l'application.
  3. Résolvez les avertissements concernant les plugins qui ne peuvent pas être convertis en SPM.
  4. Construirez l'application à partir de Xcode une fois avant de mettre à jour CI.

Après que le projet Xcode ait été construit, synchronisez à nouveau :

bunx cap sync ios

Option 2 : Re-scaffolder le projet iOS avec SPM

Utilisez ce chemin lorsque votre ios/ répertoire est proche du modèle par défaut Capacitor et que vous pouvez restaurer en toute sécurité les fichiers personnalisés ensuite.

Tout d'abord, assurez-vous que les fichiers listés dans la section de sauvegarde sont commités ou copiés quelque part en toute sécurité. Ensuite, supprimez et recréez le projet iOS avec SPM :

rm -rf ios
bunx cap add ios --packagemanager SPM
bunx cap sync ios

Restaurer les fichiers natifs dont votre application a besoin, puis ouvrez le projet :

bunx cap open ios

Cette voie est souvent plus propre qu'une migration en place car elle vous donne un modèle iOS frais Capacitor 8. Le compromis est que vous devez réappliquer soigneusement la signature, les autorisations, les fichiers Firebase, les modifications de source native et tout paramétrage Xcode personnalisé.

Nouveaux Capacitor d'applications

Pour une nouvelle application, Capacitor 8 utilise SPM par défaut lors de l'ajout d'iOS :

bunx cap add ios

Si vous devez être explicite, vous pouvez toujours passer l'option du gestionnaire de package :

bunx cap add ios --packagemanager SPM

Mettre à jour CI après la migration

Une fois l'application construite localement, mettez à jour CI/CD pour qu'elle ne suppose plus CocoaPods.

Supprimer les étapes qui exécutent :

pod install

Supprimez également les caches pour :

  • ios/App/Pods
  • ios/App/Podfile.lock
  • Les dépôts de spécifications CocoaPods, si votre flux de travail les a stockés uniquement pour cette application

Conservez vos étapes de construction régulières web et Capacitor de synchronisation. Une tâche iOS typique devrait installer les dépendances JavaScript, construire les actifs web, synchroniser Capacitor, puis construire avec Xcode :

bun install --frozen-lockfile
bun run build
bunx cap sync ios

Liste de vérification de migration

Avant la migration :

  • Créer une nouvelle branche Git.
  • Commiter l'application de travail actuelle.
  • Vérifier que chaque plugin installé prend en charge SPM.
  • Enregistrer les fichiers iOS personnalisés et les paramètres de signature.
  • Confirmer que l'application se construit avant la migration.

Pendant la migration :

  • Exécuter bunx cap spm-migration-assistant ou restructurer ios/.
  • Ajouter CapApp-SPM dans Xcode si nécessaire.
  • Ajouter debug.xcconfig dans Xcode si nécessaire.
  • Restaurer les fichiers natifs spécifiques à l'application.
  • Exécuter bunx cap sync ios.

Après la migration :

  • Construire et exécuter l'application dans Xcode.
  • Supprimer les fichiers CocoaPods restants.
  • Supprimer pod install du CI.
  • Vérifier que la signature de versionnalisation fonctionne toujours.
  • Exécuter l'application sur au moins un simulateur et un appareil réel avant la livraison.

Résolution des problèmes

Si Xcode ne peut pas résoudre les packages, réinitialisez les caches de packages à partir de Xcode et relancez. bunx cap sync ios à nouveau.

Si la migration échoue en raison d'un plugin, vérifiez si le plugin a une mise à jour plus récente avec prise en charge de SPM. Pour les plugins que vous maintenez, migrez d'abord le package du plugin et revenez ensuite à la migration de l'application.

Lorsque l'application se construit localement mais que CI échoue, vérifiez les hypothèses obsolètes de CocoaPods. Les causes courantes sont un chemin de construction forcé, une commande .xcworkspace stale, ou la mise en cache pod install de précédentes constructions. Pods/ Conclusion

La migration d'une application __CAPGO_KEEP_0__ vers Swift Package Manager est principalement axée sur la remplacement de la mise en relation des dépendances iOS.

Migrating a Capacitor app to Swift Package Manager is mostly about replacing the iOS dependency wiring. CapApp-SPM remplace la configuration de construction générée CocoaPods, et CI n'a plus besoin debug.xcconfig Pour les projets iOS personnalisés, commencez par pod install.

Migrer un projet iOS personnalisé bunx cap spm-migration-assistant. Pour les projets proches du modèle par défaut, une restructuration SPM propre est souvent plus rapide et plus facile à raisonner.

Ressources

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'un bug de la couche web est en ligne, expédiez la correction par Capgo au lieu d'attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale.

Commencez maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.