En comparación con actualizaciones anteriores, la transición de Capacitor 4 a Capacitor 5 implica cambios rotos mínimos. Esta guía proporciona instrucciones paso a paso para actualizar tu proyecto a Capacitor 5, así como una lista de cambios rotos para los plugins oficiales.
Nota: Capacitor 5 requiere NodeJS 16 o superior, ya que Node 12 ha llegado al final de su vida útil y Node 14 alcanzará el final de su vida útil el 30 de abril de 2023. Se recomienda utilizar la última versión LTS de NodeJS.
-
Instala la versión
latestde la CLI de Capacitor en tu proyecto:npm i -D @capacitor/cli@latest -
Ejecuta el siguiente comando para permitir que la CLI maneje la migración:
npx cap migrateSi no se pueden lograr algunos pasos de migración, se proporcionará información adicional en la salida de la terminal. Los pasos de migración manual se enumeran a continuación.
-
Si tienes la extensión de VS Code instalada, verifica la sección de recomendaciones de la extensión para encontrar la opción de migrar tu proyecto a Capacitor 5.
Actualizando el Proyecto iOS de Capacitor 4 a Capacitor 5
-
Actualizar Xcode: Capacitor 5 requiere Xcode 14.1 o superior.
-
Actualizar .gitignore: Realiza los siguientes cambios en tu archivo
.gitignore:- App/Podfile.lock+ App/output -
Actualizar Activos para usar un solo ícono de aplicación: Xcode 14 admite un solo ícono de aplicación de 1024x1024. Limpia tu AppIcon.appiconset eliminando todos los tamaños innecesarios.
Actualizando el Proyecto Android de Capacitor 4 a Capacitor 5
-
Actualizar Android Studio: Capacitor 5 requiere Android Studio Flamingo | 2022.2.1 o más reciente debido al uso de Gradle 8, que requiere Java JDK 17. Java 17 se incluye con Android Studio Flamingo, por lo que no se necesitan descargas adicionales.
-
Ejecutar el Asistente de Actualización de AGP: Android Studio puede ayudar con algunas actualizaciones relacionadas con Gradle y movimiento de paquetes en archivos de construcción. Para comenzar, ejecuta
Herramientas -> Asistente de Actualización de AGP. -
Actualizar Variables del Proyecto Android: En tu archivo
variables.gradle, actualiza tus valores a los siguientes mínimos nuevos:minSdkVersion = 22compileSdkVersion = 33targetSdkVersion = 33androidxActivityVersion = '1.7.0'androidxAppCompatVersion = '1.6.1'androidxCoordinatorLayoutVersion = '1.2.0'androidxCoreVersion = '1.10.0'androidxFragmentVersion = '1.5.6'coreSplashScreenVersion = '1.0.0'androidxWebkitVersion = '1.6.1'junitVersion = '4.13.2'androidxJunitVersion = '1.1.5'androidxEspressoCoreVersion = '3.5.1'cordovaAndroidVersion = '10.1.1' -
Actualizar Servicios de Google:
build.gradle dependencies {- classpath 'com.google.gms:google-services:4.3.13'+ classpath 'com.google.gms:google-services:4.3.15'} -
Actualizar el plugin de Gradle a 8.0.0:
build.gradle dependencies {- classpath 'com.android.tools.build:gradle:7.2.1'+ classpath 'com.android.tools.build:gradle:8.0.0'} -
Actualizar el wrapper de Gradle a 8.0.2:
gradle-wrapper.properties distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/dists- distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zipzipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/dists -
Desactivar Jetifier:
gradle.properties android.useAndroidX=true- android.enableJetifier=true -
Mover paquete a
build.gradle:AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?>- <manifest xmlns:android="http://schemas.android.com/apk/res/android"- package="[YOUR_PACKAGE_ID]">+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">build.gradle android {+ namespace "[YOUR_PACKAGE_ID]"compileSdkVersion rootProject.ext.compileSdkVersion -
Actualizar androidScheme: En Capacitor 6,
httpsserá la configuración predeterminada paraandroidSchemepara aplicaciones existentes para habilitar mejor las aplicaciones de Capacitor para usar la función de Autocompletar del sistema. Para evitar la pérdida de datos como resultado de este cambio, establece el esquema enhttpahora, incluso si es la configuración predeterminada actual.{server: {androidScheme: "http"}} -
Actualizar versión de Kotlin: Si tu proyecto utiliza Kotlin, actualiza la variable
kotlin_versiona'1.8.20'.
Cambios en la Funcionalidad de Plugins
La funcionalidad del siguiente plugin ha sido modificada o eliminada. Actualiza tu código en consecuencia:
- Action Sheet
- Browser
- Camera
- Device
- Geolocation
- Google Maps
- Local Notifications
- Push Notifications
- Status Bar
Action Sheet
- Actualiza la variable
androidxMaterialVersiona1.8.0.
Browser
- Actualiza la variable
androidxBrowserVersiona1.5.0.
Camera
- Para Android 13, agrega el permiso de lectura de imágenes multimedia (
<?xml version="1.0" encoding="utf-8"?>) enAndroidManifest.xml. - Actualiza la variable
androidxMaterialVersiona1.8.0. - Actualiza la variable
androidxExifInterfaceVersiona1.3.6.
Device
- Cambia
DeviceId.uuidaDeviceId.identifier. - En iOS 16+,
DeviceInfo.namedevolverá un nombre de dispositivo genérico a menos que agregues los derechos apropiados.
Geolocation
- Actualiza la
playServicesLocationVersiona21.0.1.
Google Maps
- Actualiza las siguientes variables:
googleMapsPlayServicesVersiona18.1.0.googleMapsUtilsVersiona3.4.0.googleMapsKtxVersiona3.4.0.googleMapsUtilsKtxVersiona3.4.0.kotlinxCoroutinesVersiona1.6.4.androidxCoreKTXVersiona1.10.0.kotlin_versiona1.8.20.
Local Notifications
- Para Android 13, se requiere un nuevo chequeo de permisos en tiempo de ejecución para programar notificaciones locales al objetivo SDK 33. Llama a
checkPermissions()yrequestPermissions()según sea necesario.
Push Notifications
- Para Android 13, se requiere un nuevo chequeo de permisos en tiempo de ejecución para recibir notificaciones push al objetivo SDK 33. Llama a
checkPermissions()yrequestPermissions()según sea necesario. - Actualiza la variable
firebaseMessagingVersiona23.1.2.
Status Bar
- En iOS, la animación predeterminada de la barra de estado ha cambiado a
FADE.
Siguiendo estos pasos y actualizando tu código en consecuencia, deberías haber actualizado exitosamente tu proyecto de Capacitor 4 a Capacitor 5. Asegúrate de probar tu aplicación a fondo para garantizar que todas las funciones y plugins funcionen como se espera.