Saltar al contenido principal
Materiales de aprendizaje

Cómo migrar su aplicación Capacitor a Manager de Paquetes Swift

Aprenda a mover una aplicación de iOS existente Capacitor de CocoaPods a Manager de Paquetes Swift con la asistente de migración oficial, verificaciones de Xcode y limpieza de CI.

Créditos del artículo

Martin Donadieu

Escritor

Valeria

Revisor

Jordan

Editor

Cómo migrar su aplicación Capacitor a Manager de Paquetes Swift

Migrar a Swift Package Manager es la dirección predeterminada para Capacitor proyectos de iOS. Si su aplicación todavía utiliza CocoaPods, puede migrar la aplicación en sí a SPM sin tener que reconstruir su proyecto de JavaScript code, proyecto de Android o flujo de lanzamiento desde cero.

Esta guía está destinada a equipos de aplicaciones. Explica cómo migrar una aplicación Capacitor de iOS desde CocoaPods a SPM, qué cambios realiza la asistente de migración, qué aún necesita verificar en Xcode y cómo limpiar el CI después de que la aplicación se construye.

¿Qué cambia en la aplicación

Una aplicación Capacitor basada en CocoaPods depende de archivos como:

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

Una aplicación Capacitor basada en SPM mueve la configuración de dependencias de iOS a Swift Package Manager. Durante la migración, Capacitor crea un paquete local llamado CapApp-SPM y utiliza para conectar el objetivo de la aplicación con Capacitor y las dependencias nativas instaladas.

La compilación web sigue funcionando de la misma manera. Todavía ejecuta una compilación web, sincroniza Capacitor, abre Xcode y archiva la aplicación. La principal diferencia es que CocoaPods ya no es dueño del gráfico de dependencias de iOS.

Antes de migrar

Comienza desde una rama limpia y asegúrate de que la aplicación actual se construya antes de cambiar los administradores de dependencias:

git status
npm run build
npx cap sync ios

Luego, comienza el commit del estado de trabajo. La migración toca los archivos de proyecto de iOS generados, por lo que tener un punto de retorno de rollback limpio es importante.

Siguiente, revisa qué ha personalizado su aplicación en ios/App/Los archivos y configuraciones comunes que se deben preservar incluyen:

  • App/Info.plist
  • App/AppDelegate.swift
  • App/SceneDelegate.swift, si está presente
  • App/Assets.xcassets/
  • App/Base.lproj/
  • App/App.entitlements
  • App/GoogleService-Info.plist, si utiliza Firebase
  • personalizado .xcconfig archivos
  • configuración de firma, identificador de paquete, ID de equipo y perfiles de provisión
  • extensiones de la aplicación, archivos Swift nativos, archivos Objective-C o frameworks incorporados

También compruebe sus dependencias Capacitor y de Cordova instaladas. Una migración de SPM de nivel de aplicación puede bloquearse por una dependencia nativa que no tiene un camino compatible con SPM. Actualice esos paquetes antes de migrar cuando sea posible.

Utilice el asistente de migración

Para la mayoría de las aplicaciones existentes, comience con el asistente de migración oficial Capacitor:

npx cap spm-migration-assistant

Ejecute desde la raíz del proyecto Capacitor. El asistente elimina la integración de CocoaPods, crea el paquete local, genera referencias de paquete para las dependencias nativas instaladas y agrega la configuración generada necesaria por el proyecto de iOS. CapApp-SPM Después de que termine, abra el proyecto de iOS:

After it finishes, open the iOS project:

npx cap open ios

Lee el resultado del asistente antes de cerrar su terminal. Si le pide que complete los pasos manuales de Xcode, hágalos antes de sincronizar de nuevo.

Finalice los pasos de Xcode

En Xcode, verifique la configuración del proyecto y objetivo de la aplicación:

  1. Confirmar CapApp-SPM se agrega como una dependencia de paquete local.
  2. Confirme que el objetivo de la aplicación vincula los productos de paquete generados.
  3. Agregar el generado debug.xcconfig a la configuración del proyecto si el asistente le pide que lo haga.
  4. Resuelva cualquier advertencia de paquete en Xcode.
  5. Construya la aplicación una vez desde Xcode.

Si Xcode no puede resolver paquetes, utilice Archivo > Paquetes > Reiniciar cachés de paquetesEntonces, resuelve los paquetes de nuevo.

Sync y construye de nuevo

Después de configurar Xcode, regresa a la terminal y sincroniza Capacitor:

npx cap sync ios

Luego construye desde Xcode de nuevo. No considere la migración como completa hasta que una construcción limpia funcione desde Xcode, porque la firma de lanzamiento, las autorizaciones, las extensiones de la aplicación, la resolución de paquetes se validan allí.

Si la aplicación utiliza notificaciones de push, dominios asociados, modos de fondo, grupos de la aplicación, Firebase o cualquier configuración nativa SDK, ejecuta esas flujos en un simulador o dispositivo después de que la construcción tenga éxito.

Opción alternativa: recrear iOS con SPM

Si su ios/ carpeta está cerca del plantilla de Capacitor predeterminado, puede ser más rápido recrearla con SPM en lugar de migrar en su lugar.

Sólo utilice este camino después de haber cometido o respaldado todos los archivos y ajustes de firma nativos que necesite:

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

Luego restaure sus archivos y ajustes nativos específicos de la aplicación. Este camino le da un proyecto SPM limpio, pero es más fácil perder cambios personalizados de Xcode si no los inventarió primero.

Para nuevas aplicaciones Capacitor, Capacitor 8 crea proyectos de iOS con SPM por defecto:

npx cap add ios

Todavía puede ser explícito:

npx cap add ios --packagemanager SPM

Elimine los residuos de CocoaPods

Después de que la aplicación de SPM se compile, elimine las suposiciones de CocoaPods sobrantes de los scripts locales y CI.

Elimine pasos como:

pod install

También elimine las cachés que solo existían para CocoaPods:

  • ios/App/Pods
  • ios/App/Podfile.lock
  • Repositorios de especificaciones de CocoaPods
  • Claves de caché de CI basadas en el Podfile

Un flujo de CI básico después de la migración debería instalar dependencias de JavaScript, compilar la aplicación web, sincronizar Capacitor, y compilar con Xcode:

npm ci
npm run build
npx cap sync ios

Si su CI sigue compilando App.xcworkspaceactualice a la ruta del proyecto o espacio de trabajo que existe después de la migración. No mantenga rutas de CocoaPods obsoletas solo porque la antigua tarea las utilizó.

Solución de problemas

El asistente advierte sobre una dependencia incompatible

Actualice la dependencia primero y ejecute el asistente de nuevo. Si no existe una versión compatible con SPM, mantenga la aplicación en CocoaPods hasta que reemplace esa dependencia o el mantenedor agregue soporte para SPM.

Xcode no puede resolver paquetes

Reinicia las cachés de paquetes en Xcode, verifica que CapApp-SPM esté presente como un paquete local, y ejecuta npx cap sync ios de nuevo.

La aplicación se compila localmente pero falla en CI

Busca suposiciones de CocoaPods antiguas: pod install, Pods/ cachés, Podfile.lock claves de caché o comandos de compilación que apuntan a un paquete eliminado .xcworkspace.

Cambios en la firma o permisos

Compara el objetivo de Xcode migrado con el proyecto previo a la migración. Restaura el identificador de paquete, equipo, perfil de provisión, archivo de permisos, capacidades y ajustes de extensión.

Lista de verificación de migración

Antes de la migración:

  • Crea una rama.
  • Confirma que la aplicación iOS actual se compila correctamente.
  • Comita el estado de trabajo.
  • Inventario archivos nativos personalizados y ajustes de firma.
  • Actualiza las dependencias nativas que ya tienen versiones más recientes compatibles con SPM.

Durante la migración:

  • Ejecuta npx cap spm-migration-assistant.
  • Abre el proyecto con npx cap open ios.
  • Agrega CapApp-SPM en Xcode si es necesario.
  • Agrega debug.xcconfig en Xcode si es necesario.
  • Resuelve advertencias de paquetes.
  • Ejecutar npx cap sync ios.

Después de la migración:

  • Construye la aplicación desde Xcode.
  • Prueba capacidades nativas en un simulador o dispositivo.
  • Elimina comandos de CocoaPods de CI.
  • Elimina cachés de CocoaPods solo.
  • Verifica firmado de archivo y lanzamiento.

Utiliza Capgo Habilidades para la migración

Si utiliza agentes de IA para manejar la migración, comienza desde Capgo Skills __CAPGO_KEEP_0__ Habilidades

  • capacitor-best-practices para revisar la estructura de la aplicación antes de cambiar ios/.
  • cocoapods-to-spm para planificar los pasos de migración de SPM y Xcode.
  • capacitor-ci-cd para eliminar suposiciones de CocoaPods de las líneas de pipeline de compilación.
  • debugging-capacitor y ios-android-logs para investigar problemas de dispositivo solo después de la migración.

Utilícelos antes de cambiar el proyecto iOS para que el agente audite archivos nativos, CI y compatibilidad de dependencias en lugar de ejecutar solo el comando de migración.

Conclusión

Migrar una aplicación Capacitor a Swift Package Manager es principalmente un cambio en la gestión de dependencias de iOS. El camino más seguro es comenzar desde una rama limpia, ejecutar npx cap spm-migration-assistantterminar los pasos manuales de Xcode, sincronizar nuevamente y eliminar CocoaPods de CI solo después de que la aplicación se compile.

Si su proyecto iOS está muy personalizado, migre en lugar. Si está cerca del modelo de plantilla Capacitor predeterminado, recrear ios/ con npx cap add ios --packagemanager SPM puede ser más limpio.

Recursos

Actualizaciones en vivo para aplicaciones Capacitor

Cuando haya un error en la capa de web, envíe la corrección a través de Capgo en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios obtienen la actualización en segundo plano mientras que los cambios nativos siguen en el camino de revisión normal.

soporte humano de Martin

Iniciar Ahora

Últimas noticias de nuestro Blog

Capgo le da las mejores herramientas que necesita para crear una aplicación móvil verdaderamente profesional.