Im Vergleich zu früheren Updates beinhaltet der Übergang von Capacitor 4 zu Capacitor 5 minimale breaking changes. Dieser Leitfaden bietet schrittweise Anweisungen zum Aktualisieren Ihres Projekts auf Capacitor 5 sowie eine Liste der breaking changes für offizielle Plugins.
Hinweis: Capacitor 5 erfordert NodeJS 16 oder höher, da Node 12 das Ende seiner Lebensdauer erreicht hat und Node 14 am 30. April 2023 das Ende seiner Lebensdauer erreicht. Es wird empfohlen, die neueste LTS-Version von NodeJS zu verwenden.
-
Installieren Sie die
neuesteVersion der Capacitor CLI in Ihrem Projekt:npm i -D @capacitor/cli@latest -
Führen Sie den folgenden Befehl aus, um die Migration von der CLI verwalten zu lassen:
npx cap migrateFalls einzelne Migrationsschritte nicht erreicht werden können, werden zusätzliche Informationen im Terminalausgabefenster bereitgestellt. Manuelle Migrationsschritte sind unten aufgeführt.
-
Wenn Sie die VS Code-Erweiterung installiert haben, überprüfen Sie den Abschnitt Empfehlungen der Erweiterung, um die Option zu finden, Ihr Projekt auf Capacitor 5 zu migrieren.
Upgrade des Capacitor 4 iOS-Projekts auf Capacitor 5
-
Upgrade Xcode: Capacitor 5 erfordert Xcode 14.1+.
-
Aktualisieren Sie .gitignore: Nehmen Sie die folgenden Änderungen an Ihrer
.gitignore-Datei vor:- App/Podfile.lock+ App/output -
Aktualisieren Sie Assets zur Verwendung eines einzelnen App-Icons: Xcode 14 unterstützt ein einzelnes App-Icon mit 1024x1024. Bereinigen Sie Ihr AppIcon.appiconset, indem Sie alle unnötigen Größen entfernen.
Upgrade des Capacitor 4 Android-Projekts auf Capacitor 5
-
Upgrade Android Studio: Capacitor 5 erfordert Android Studio Flamingo | 2022.2.1 oder neuer aufgrund der Verwendung von Gradle 8, das Java JDK 17 benötigt. Java 17 wird mit Android Studio Flamingo ausgeliefert, sodass keine zusätzlichen Downloads erforderlich sind.
-
Führen Sie den AGP-Upgrade-Assistenten aus: Android Studio kann bei einigen Updates im Zusammenhang mit Gradle und dem Verschieben von Paketen in Build-Dateien helfen. Um zu beginnen, führen Sie
Tools -> AGP Upgrade Assistantaus. -
Aktualisieren Sie Android-Projektvariablen: Aktualisieren Sie in Ihrer
variables.gradle-Datei Ihre Werte auf die folgenden neuen Mindestwerte: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' -
Aktualisieren Sie Google Services:
build.gradle dependencies {- classpath 'com.google.gms:google-services:4.3.13'+ classpath 'com.google.gms:google-services:4.3.15'} -
Aktualisieren Sie das Gradle-Plugin auf 8.0.0:
build.gradle dependencies {- classpath 'com.android.tools.build:gradle:7.2.1'+ classpath 'com.android.tools.build:gradle:8.0.0'} -
Aktualisieren Sie den Gradle-Wrapper auf 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 -
Deaktivieren Sie Jetifier:
gradle.properties android.useAndroidX=true- android.enableJetifier=true -
Verschieben Sie das Paket nach
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 -
Aktualisieren Sie androidScheme: In Capacitor 6 wird
httpsdie Standardeinstellung fürandroidSchemefür vorhandene Apps sein, um es Capacitor-Anwendungen besser zu ermöglichen, die Autofill-Funktion des Systems zu nutzen. Um Datenverlust infolge dieser Änderung zu vermeiden, stellen Sie das Schema jetzt aufhttpein, auch wenn es derzeit die Standard-Einstellung ist.{server: {androidScheme: "http"}} -
Aktualisieren Sie die Kotlin-Version: Wenn Ihr Projekt Kotlin verwendet, aktualisieren Sie die Variable
kotlin_versionauf'1.8.20'.
Änderungen an der Plugin-Funktionalität
Die folgende Funktionalität der Plugins wurde geändert oder entfernt. Aktualisieren Sie Ihren Code entsprechend:
- Action Sheet
- Browser
- Kamera
- Gerät
- Geolokalisierung
- Google Maps
- Lokale Benachrichtigungen
- Push-Benachrichtigungen
- Statusleiste
Action Sheet
- Aktualisieren Sie die Variable
androidxMaterialVersionauf1.8.0.
Browser
- Aktualisieren Sie die Variable
androidxBrowserVersionauf1.5.0.
Kamera
- Für Android 13 fügen Sie die Berechtigung zum Lesen von Medienbildern (
<?xml version="1.0" encoding="utf-8"?>) inAndroidManifest.xmlhinzu. - Aktualisieren Sie die Variable
androidxMaterialVersionauf1.8.0. - Aktualisieren Sie die Variable
androidxExifInterfaceVersionauf1.3.6.
Gerät
- Ändern Sie
DeviceId.uuidinDeviceId.identifier. - Auf iOS 16+ gibt
DeviceInfo.nameeinen generischen Gerätenamen zurück, es sei denn, Sie fügen die entsprechenden Entitlements hinzu.
Geolokalisierung
- Aktualisieren Sie die
playServicesLocationVersionauf21.0.1.
Google Maps
- Aktualisieren Sie die folgenden Variablen:
googleMapsPlayServicesVersionauf18.1.0.googleMapsUtilsVersionauf3.4.0.googleMapsKtxVersionauf3.4.0.googleMapsUtilsKtxVersionauf3.4.0.kotlinxCoroutinesVersionauf1.6.4.androidxCoreKTXVersionauf1.10.0.kotlin_versionauf1.8.20.
Lokale Benachrichtigungen
- Für Android 13 ist eine neue Laufzeitberechtigungsüberprüfung erforderlich, um lokale Benachrichtigungen zu planen, wenn SDK 33 angestrebt wird. Rufen Sie
checkPermissions()undrequestPermissions()entsprechend auf.
Push-Benachrichtigungen
- Für Android 13 ist eine neue Laufzeitberechtigungsüberprüfung erforderlich, um Push-Benachrichtigungen zu empfangen, wenn SDK 33 angestrebt wird. Rufen Sie
checkPermissions()undrequestPermissions()entsprechend auf. - Aktualisieren Sie die Variable
firebaseMessagingVersionauf23.1.2.
Statusleiste
- Auf iOS wurde die Standardanimation der Statusleiste in
FADEgeändert.
Indem Sie diese Schritte befolgen und Ihren Code entsprechend aktualisieren, sollten Sie Ihr Projekt erfolgreich von Capacitor 4 auf Capacitor 5 aktualisiert haben. Stellen Sie sicher, dass Sie Ihre Anwendung gründlich testen, um sicherzustellen, dass alle Funktionen und Plugins wie erwartet funktionieren.