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
neueste
Version 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 Assistant
aus. -
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
https
die Standardeinstellung fürandroidScheme
fü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 aufhttp
ein, 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_version
auf'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
androidxMaterialVersion
auf1.8.0
.
Browser
- Aktualisieren Sie die Variable
androidxBrowserVersion
auf1.5.0
.
Kamera
- Für Android 13 fügen Sie die Berechtigung zum Lesen von Medienbildern (
<?xml version="1.0" encoding="utf-8"?>
) inAndroidManifest.xml
hinzu. - Aktualisieren Sie die Variable
androidxMaterialVersion
auf1.8.0
. - Aktualisieren Sie die Variable
androidxExifInterfaceVersion
auf1.3.6
.
Gerät
- Ändern Sie
DeviceId.uuid
inDeviceId.identifier
. - Auf iOS 16+ gibt
DeviceInfo.name
einen generischen Gerätenamen zurück, es sei denn, Sie fügen die entsprechenden Entitlements hinzu.
Geolokalisierung
- Aktualisieren Sie die
playServicesLocationVersion
auf21.0.1
.
Google Maps
- Aktualisieren Sie die folgenden Variablen:
googleMapsPlayServicesVersion
auf18.1.0
.googleMapsUtilsVersion
auf3.4.0
.googleMapsKtxVersion
auf3.4.0
.googleMapsUtilsKtxVersion
auf3.4.0
.kotlinxCoroutinesVersion
auf1.6.4
.androidxCoreKTXVersion
auf1.10.0
.kotlin_version
auf1.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
firebaseMessagingVersion
auf23.1.2
.
Statusleiste
- Auf iOS wurde die Standardanimation der Statusleiste in
FADE
geä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.