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,
https
sarà l’impostazione predefinita perandroidScheme
per 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 suhttp
ora, anche se è l’impostazione predefinita attuale.{server: {androidScheme: "http"}} -
Aggiorna la versione di Kotlin: Se il tuo progetto utilizza Kotlin, aggiorna la variabile
kotlin_version
a'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
androidxMaterialVersion
a1.8.0
.
Browser
- Aggiorna la variabile
androidxBrowserVersion
a1.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
androidxMaterialVersion
a1.8.0
. - Aggiorna la variabile
androidxExifInterfaceVersion
a1.3.6
.
Device
- Cambia
DeviceId.uuid
inDeviceId.identifier
. - Su iOS 16+,
DeviceInfo.name
restituirà un nome dispositivo generico a meno che non aggiungi gli appropriati entitlements.
Geolocation
- Aggiorna
playServicesLocationVersion
a21.0.1
.
Google Maps
- Aggiorna le seguenti variabili:
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
- 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
firebaseMessagingVersion
a23.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.