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
latest
de 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,
https
será la configuración predeterminada paraandroidScheme
para 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 enhttp
ahora, 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_version
a'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
androidxMaterialVersion
a1.8.0
.
Browser
- Actualiza la variable
androidxBrowserVersion
a1.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
androidxMaterialVersion
a1.8.0
. - Actualiza la variable
androidxExifInterfaceVersion
a1.3.6
.
Device
- Cambia
DeviceId.uuid
aDeviceId.identifier
. - En iOS 16+,
DeviceInfo.name
devolverá un nombre de dispositivo genérico a menos que agregues los derechos apropiados.
Geolocation
- Actualiza la
playServicesLocationVersion
a21.0.1
.
Google Maps
- Actualiza las siguientes variables:
googleMapsPlayServicesVersion
a18.1.0
.googleMapsUtilsVersion
a3.4.0
.googleMapsKtxVersion
a3.4.0
.googleMapsUtilsKtxVersion
a3.4.0
.kotlinxCoroutinesVersion
a1.6.4
.androidxCoreKTXVersion
a1.10.0
.kotlin_version
a1.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
firebaseMessagingVersion
a23.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.