Rispetto agli aggiornamenti precedenti, il passaggio da Capacitor 4 a Capacitor 5 comporta modifiche minime. Questa guida fornisce istruzioni dettagliate per aggiornare il tuo progetto a Capacitor 5, oltre a un elenco delle modifiche importanti per i plugin ufficiali.
Nota: Capacitor 5 richiede NodeJS 16 o superiore, poiché Node 12 ha raggiunto la fine del supporto e Node 14 raggiungerà la fine del supporto il 30 aprile 2023. Si consiglia di utilizzare l’ultima versione LTS di NodeJS.
-
Installa l’ultima versione del CLI Capacitor nel tuo progetto:
npm i -D @capacitor/cli@latest -
Esegui il seguente comando per permettere al CLI di gestire la migrazione:
npx cap migrateSe alcuni passaggi della migrazione non possono essere completati, verranno fornite informazioni aggiuntive nell’output del terminale. I passaggi di migrazione manuale sono elencati di seguito.
-
Se hai installato l’estensione VS Code, controlla la sezione delle raccomandazioni dell’estensione per trovare l’opzione per migrare il tuo progetto a Capacitor 5.
Aggiornamento del Progetto iOS Capacitor 4 a Capacitor 5
-
Aggiorna Xcode: Capacitor 5 richiede Xcode 14.1+.
-
Aggiorna .gitignore: Apporta le seguenti modifiche al tuo file
.gitignore:- App/Podfile.lock+ App/output -
Aggiorna gli Assets per utilizzare una singola icona app: Xcode 14 supporta una singola icona app di 1024x1024. Pulisci il tuo AppIcon.appiconset rimuovendo tutte le dimensioni non necessarie.
Aggiornamento del Progetto Android Capacitor 4 a Capacitor 5
-
Aggiorna Android Studio: Capacitor 5 richiede Android Studio Flamingo | 2022.2.1 o più recente a causa dell’utilizzo di Gradle 8, che richiede Java JDK 17. Java 17 è incluso in Android Studio Flamingo, quindi non sono necessari download aggiuntivi.
-
Esegui AGP Upgrade Assistant: Android Studio può aiutare con alcuni aggiornamenti relativi a Gradle e lo spostamento dei pacchetti nei file di build. Per iniziare, esegui
Tools -> AGP Upgrade Assistant. -
Aggiorna le Variabili del Progetto Android: Nel tuo file
variables.gradle, aggiorna i tuoi valori ai seguenti nuovi minimi: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' -
Aggiorna Google Services:
build.gradle dependencies {- classpath 'com.google.gms:google-services:4.3.13'+ classpath 'com.google.gms:google-services:4.3.15'} -
Aggiorna il plugin 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'} -
Aggiorna Gradle wrapper 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 -
Disabilita Jetifier:
gradle.properties android.useAndroidX=true- android.enableJetifier=true -
Sposta il pacchetto in
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 -
Aggiorna androidScheme: In Capacitor 6,
httpssarà l’impostazione predefinita perandroidSchemeper le app esistenti per consentire alle applicazioni Capacitor di utilizzare meglio la funzione di Autofill di sistema. Per evitare la perdita di dati a seguito di questa modifica, imposta lo schema suhttpora, anche se è l’impostazione predefinita attuale.{server: {androidScheme: "http"}} -
Aggiorna la versione di Kotlin: Se il tuo progetto utilizza Kotlin, aggiorna la variabile
kotlin_versiona'1.8.20'.
Modifiche alla Funzionalità dei Plugin
Le seguenti funzionalità dei plugin sono state modificate o rimosse. Aggiorna il tuo codice di conseguenza:
- Action Sheet
- Browser
- Camera
- Device
- Geolocation
- Google Maps
- Local Notifications
- Push Notifications
- Status Bar
Action Sheet
- Aggiorna la variabile
androidxMaterialVersiona1.8.0.
Browser
- Aggiorna la variabile
androidxBrowserVersiona1.5.0.
Camera
- Per Android 13, aggiungi il permesso di lettura delle immagini multimediali (
<?xml version="1.0" encoding="utf-8"?>) inAndroidManifest.xml. - Aggiorna la variabile
androidxMaterialVersiona1.8.0. - Aggiorna la variabile
androidxExifInterfaceVersiona1.3.6.
Device
- Cambia
DeviceId.uuidinDeviceId.identifier. - Su iOS 16+,
DeviceInfo.namerestituirà un nome dispositivo generico a meno che non aggiungi gli appropriati entitlements.
Geolocation
- Aggiorna
playServicesLocationVersiona21.0.1.
Google Maps
- Aggiorna le seguenti variabili:
googleMapsPlayServicesVersiona18.1.0.googleMapsUtilsVersiona3.4.0.googleMapsKtxVersiona3.4.0.googleMapsUtilsKtxVersiona3.4.0.kotlinxCoroutinesVersiona1.6.4.androidxCoreKTXVersiona1.10.0.kotlin_versiona1.8.20.
Local Notifications
- Per Android 13, è necessario un nuovo controllo dei permessi runtime per programmare le notifiche locali quando si ha come target SDK 33. Chiama
checkPermissions()erequestPermissions()di conseguenza.
Push Notifications
- Per Android 13, è necessario un nuovo controllo dei permessi runtime per ricevere le notifiche push quando si ha come target SDK 33. Chiama
checkPermissions()erequestPermissions()di conseguenza. - Aggiorna la variabile
firebaseMessagingVersiona23.1.2.
Status Bar
- Su iOS, l’animazione predefinita della status bar è stata modificata in
FADE.
Seguendo questi passaggi e aggiornando il tuo codice di conseguenza, dovresti aver aggiornato con successo il tuo progetto da Capacitor 4 a Capacitor 5. Assicurati di testare accuratamente la tua applicazione per verificare che tutte le funzionalità e i plugin funzionino come previsto.