Saltar al contenido principal
Tutorial

Cómo Migrar su Aplicación Capacitor a Swift Package Manager

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

Martin Donadieu

Martin Donadieu

Gerente de Contenido

Cómo Migrar su Aplicación Capacitor a Swift Package Manager

Swift Package Manager es la dirección por defecto para proyectos de iOS Capacitor. Si su aplicación sigue utilizando CocoaPods, puede migrar la aplicación en sí a SPM sin reconstruir su proyecto de JavaScript code, Android o flujo de lanzamiento desde cero.

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

Qué cambia en la aplicación

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

  • 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 iOS a Swift Package Manager. Durante la migración, Capacitor crea un paquete local denominado 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 crea una versión archivada de la aplicación. La principal diferencia es que CocoaPods ya no es dueño de la gráfica de dependencias iOS.

Antes de migrar

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

git status
npm run build
npx cap sync ios

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

Después de eso, revisa qué se ha personalizado en ios/App/Archivos y configuraciones comunes a 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 firmas, identificador de paquete, ID de equipo y perfiles de provisión
  • extensiones de la aplicación, archivos Swift nativos, archivos Objective-C o marcos incorporados

También comprueba tus dependencias instaladas Capacitor y de Cordova. Una migración de SPM de nivel de aplicación puede estar bloqueada por una dependencia nativa que no tiene un camino compatible con SPM. Actualiza esos paquetes antes de migrar cuando sea posible.

Utiliza el asistente de migración

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

npx cap spm-migration-assistant

Ejecútalo desde la raíz de tu proyecto Capacitor de 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, abre el proyecto de iOS:

Lee la salida del asistente antes de cerrar tu terminal. Si te pide que completes pasos manuales de Xcode, hazlo antes de sincronizar de nuevo.

npx cap open ios

Completa los pasos de Xcode

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

Confirmar

  1. Confirmar CapApp-SPM se agrega como dependencia de paquete local.
  2. Confirmar que los enlaces de la aplicación objetivo se vinculan a los productos de paquete generados.
  3. Agregar el generado debug.xcconfig a la configuración del proyecto si el asistente lo solicita.
  4. Resolver cualquier advertencia de paquete en Xcode.
  5. Construir la aplicación una vez desde Xcode.

Si Xcode no puede resolver paquetes, utilice Archivo > Paquetes > Reiniciar Cachés de Paquetesy resuelva los paquetes nuevamente.

Sincronice y construya nuevamente

Después de que Xcode esté configurado, regrese al terminal y sincronice Capacitor:

npx cap sync ios

Y construya desde Xcode nuevamente. No trate la migración como hecha hasta que una construcción limpia funcione desde Xcode, porque la firma de lanzamiento, las autorizaciones, las extensiones de la aplicación y la resolución de paquetes se validan allí.

If el app utiliza notificaciones push, dominios asociados, modos de fondo, grupos de app, Firebase, o cualquier configuración nativa SDK, ejecuta esas flujo en un simulador o dispositivo después de que el build tenga éxito.

Opcional: recrea iOS con SPM

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

Sólo utiliza este camino después de haber cometido o respaldado cada archivo y configuración de firma nativa que necesites:

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

Luego restaure tus archivos y configuraciones nativas específicas de la app. Este camino te da un proyecto de SPM limpio, pero es más fácil perder cambios personalizados de Xcode si no los inventariaste primero.

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

npx cap add ios

Todavía puedes ser explícito:

npx cap add ios --packagemanager SPM

Elimina residuos de CocoaPods

Después de que el app de SPM se construye, elimina suposiciones de CocoaPods de scripts locales y CI.

Elimina pasos como:

pod install

También elimina cachés que solo existieron para CocoaPods:

  • ios/App/Pods
  • ios/App/Podfile.lock
  • Repositorios de especificaciones de CocoaPods
  • Las claves de caché de CI se basan en el archivo Podfile

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

npm ci
npm run build
npx cap sync ios

Si tu CI sigue compilando App.xcworkspace, actualiza a la ruta del proyecto o del espacio de trabajo que existe después de la migración. No mantengas rutas de CocoaPods obsoletas solo porque el trabajo antiguo las utilizó.

Solución de problemas

El asistente advierte sobre una dependencia incompatible

Actualiza la dependencia primero y ejecuta el asistente de nuevo. Si no existe una versión compatible con SPM, mantén la aplicación en CocoaPods hasta que reemplaces 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 paquete local, y ejecuta npx cap sync ios de nuevo.

The app se compila localmente pero CI falla

Busque asunciones de CocoaPods antiguas: pod install, Pods/ cachés, Podfile.lock llaves de caché, .xcworkspace.

o comandos de compilación que apunten a un archivo eliminado

Se cambiaron la firma o permisos

Compare el objetivo de Xcode migrado con el proyecto previo a la migración. Restaure el identificador del paquete, equipo, perfil de provisión, archivo de permisos, capacidades y ajustes de extensiones.

Lista de verificación de migración

  • Antes de la migración:
  • Crear una rama.
  • Confirmar que la aplicación iOS actual se compila.
  • Comitar el estado de trabajo actualizado. Inventario archivos nativos personalizados y ajustes de firma.
  • Actualice dependencias nativas que ya tienen versiones más recientes compatibles con SPM.

Durante la migración:

  • Ejecutar npx cap spm-migration-assistant.
  • Abrir el proyecto con npx cap open ios.
  • Agregar CapApp-SPM en Xcode si es necesario.
  • Agregar debug.xcconfig en Xcode si es necesario.
  • Resolver advertencias de paquetes.
  • Ejecutar npx cap sync ios.

Después de la migración:

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

Utiliza Capgo Habilidades para la migración

Si utilizas agentes de IA para manejar la migración, comienza desde Capgo Habilidades en lugar de una solicitud en blanco. Las habilidades más útiles para este trabajo son:

  • 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 To investigar problemas solo de dispositivo después de la migración.

Utilícelos antes de cambiar el proyecto de 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 empezar 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 de iOS está muy personalizado, migre en lugar. Si está cerca del modelo de plantilla de Capacitor por defecto, recrear ios/ con npx cap add ios --packagemanager SPM puede ser más limpio.

Recursos

Actualizaciones en vivo para aplicaciones de Capacitor

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

Comience ahora

Últimas noticias de nuestro Blog

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