Sauter au contenu principal
Tutoriel

Comment migrer votre application Capacitor vers le gestionnaire de packages Swift

Apprenez à déplacer une application iOS existante Capacitor de CocoaPods vers le gestionnaire de packages Swift avec l'assistant de migration officiel, les vérifications Xcode et la suppression des éléments CI.

Crédits de l'article

Martin Donadieu

Écrivain

Valeria

Réviseur

Jordan

Éditeur

Comment migrer votre application Capacitor vers le gestionnaire de packages Swift

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 release depuis zéro.

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 ait construit.

Quels changements dans l'application

Une application Capacitor basée sur CocoaPods dépend de fichiers tels que :

  • ios/App/Podfile
  • ios/App/Podfile.lock
  • ios/App/Pods/
  • ios/App/App.xcworkspace

Une application Capacitor basée sur SPM déplace la mise en câble des dépendances iOS dans le gestionnaire de packages Swift. Lors de la migration, Capacitor crée un package local nommé CapApp-SPM et l'utilise pour relier la cible d'application avec Capacitor et les dépendances natives installées.

La construction web fonctionne toujours de la même manière. Vous exécutez toujours une construction web, synchronisez Capacitor, ouvrez Xcode et archiviez l'application. La principale différence est que CocoaPods ne possède plus le graphique de dépendance iOS.

Avant de migrer

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

git status
npm run build
npx cap sync ios

Ensuite, commitez l'état fonctionnel. 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 à préserver incluent :

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

Vérifiez également vos dépendances Capacitor et Cordova installées. Une migration SPM d'applications peut être bloquée par une dépendance native qui n'a pas de chemin compatible SPM. Mettez à jour ces packages avant la migration si 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 fichier local CapApp-SPM 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 au projet iOS.

Après cela, ouvrez le projet iOS :

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-l’avant de synchroniser à nouveau.

Terminez les étapes Xcode

Vérifiez la configuration du projet et de la cible dans Xcode :

  1. Confirm CapApp-SPM est ajouté comme dépendance de package local.
  2. Confirmez que les liens de l'application cible se lient aux produits de package générés.
  3. Ajoutez le généré debug.xcconfig Résolvez les avertissements de package dans Xcode.
  4. Résolvez les avertissements de package dans Xcode.
  5. Si Xcode ne peut pas résoudre les packages, utilisez

Si Xcode ne peut pas résoudre les packages, utilisez , puis résolvez les packages à nouveau., puis résolvez à nouveau les packages.

Reconstruire et synchroniser à nouveau

Après avoir configuré Xcode, revenez au terminal et synchronisez Capacitor.

npx cap sync ios

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

If the app uses push notifications, associated domains, background modes, app groups, Firebase, or any native SDK configuration, run those flows on a simulator or device after the build succeeds.

Alternative : recréer 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 ce chemin après avoir commité ou sauvegardé chaque fichier et paramètre natif dont vous avez besoin.

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

Récupérez ensuite vos fichiers et paramètres natifs spécifiques à l'application. Cette méthode 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

Nettoyez les résidus de CocoaPods

Après que l'application SPM s'est construite, supprimez les hypothèses de CocoaPods des scripts locaux et de CI.

Supprimez les étapes comme :

pod install

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

  • ios/App/Pods
  • ios/App/Podfile.lock
  • CocoaPods dépôts de spécifications
  • Clés de cache CI basées sur le 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.xcworkspaceMettez à jour votre CI pour utiliser le chemin du projet ou du dossier de travail qui existe après la migration. N'oubliez pas les chemins CocoaPods obsolètes juste parce que l'ancien job les utilisait.

Troubleshooting

Le conseiller vous avertit d'une dépendance incompatible

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

Xcode ne peut pas résoudre les packages

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

L'application construit localement mais la CI échoue

Recherchez les anciennes hypothèses CocoaPods : pod install, Pods/ caches, Podfile.lock clés de cache, ou des commandes de build pointant vers un élément supprimé .xcworkspace.

Signature ou droits modifiés

Comparez le cible Xcode migré à l'état initial du projet. Récupérez l'identifiant de l'application, l'équipe, le profil de provisioning, le fichier d'entitlements, les capacités et les paramètres d'extension.

Liste de migration

Avant la migration :

  • Créez une branche.
  • Confirmez que l'application iOS actuelle se compile.
  • Commitez l'état de travail.
  • Gérez vos fichiers natifs personnalisés et vos paramètres de signature.
  • Mettez à jour les dépendances natives qui disposent déjà de versions plus récentes compatibles avec SPM.

Durant la migration :

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

Après la migration :

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

Utiliser Capgo Compétences pour la migration.

Si vous utilisez des agents AI pour gérer la migration, commencez par Capgo Skills pour planifier les étapes de migration SPM et les étapes suivantes de Xcode.

  • capacitor-best-practices avant de procéder à des modifications ios/.
  • cocoapods-to-spm planifier les étapes de migration de SPM et les suivis Xcode.
  • capacitor-ci-cd pour investiguer les problèmes de dispositif uniquement après la migration.
  • debugging-capacitor and ios-android-logs investiguer les problèmes liés uniquement aux appareils après la migration.

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

Conclusion

Migrer 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, de lancer npx cap spm-migration-assistantfinir les étapes manuelles Xcode, synchroniser à nouveau et supprimer CocoaPods de CI uniquement après que l'application s'exécute.

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 instantanées pour les applications Capacitor

Lorsqu'un bug de la couche web est en direct, expédiez la correction par le biais de Capgo au lieu d'attendre des jours pour l'approbation de l'app store. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans le chemin de revue normal.

Dernières actualités de notre Blog

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