从Capacitor 6升级到Capacitor 7
本指南将为您介绍如何将项目升级至当前Capacitor 7版本,同时列出官方插件的重大变更事项。
Capacitor配置文件的重大变更
bundledWebRuntime
配置选项已被移除。若原先设置为false
可直接删除该配置;若设为true
,则需使用打包工具将@capacitor/core
代码打包至应用中。
cordova.staticPlugins
配置选项已被移除。如需使用静态Cordova插件,现应改用带有use-framework
属性的podspec
标签,而非framework
标签(cordova-ios 7+已不再支持后者)。
NodeJS 20+环境要求
Node 18已于2023年10月18日终止主流支持。Capacitor 7要求NodeJS 20或更高版本(推荐使用最新的LTS版本)。
遥测功能改为默认开启
此变更仅影响新用户——若您曾执行过任何Capacitor命令,系统已保存相关偏好设置。同时,遥测功能不会在非交互环境(如CI服务器)中运行,确保这些场景下不会收集数据。
可通过npx cap telemetry off
命令关闭该功能。
使用CLI进行迁移
在项目中安装最新版Capacitor CLI:
npm i -D @capacitor/cli@latest
安装完成后,执行以下命令让CLI自动处理迁移:
npx cap migrate
如遇迁移步骤无法完成,终端输出将提供额外信息。下方列出了手动迁移的具体步骤。
iOS平台升级指南
以下说明如何将Capacitor 6 iOS项目升级至Capacitor 7。
升级Xcode
Capacitor 7要求Xcode 16.0+版本。
提高iOS部署目标
在Xcode项目中:选择项目编辑器中的Project,打开Build Settings选项卡。在Deployment部分,将iOS Deployment Target改为iOS 14.0。对所有的应用Targets重复相同步骤。
接着,修改ios/App/Podfile
中的iOS版本为14.0:
platform :ios, '14.0'
Android平台升级指南
以下说明如何将Capacitor 6 Android项目升级至Capacitor 7。
升级Android Studio
Capacitor 7需要Android Studio Ladybug | 2024.2.1或更新版本及Java JDK 21。Android Studio Ladybug自带Java 21,无需额外下载!
升级后,Android Studio可协助处理gradle相关更新及构建文件中的包迁移。首先运行工具 -> AGP升级助手
。
更新Android项目变量
在variables.gradle
文件中更新以下最低要求值:
minSdkVersion = 23
compileSdkVersion = 35
targetSdkVersion = 35
androidxActivityVersion = '1.9.2'
androidxAppCompatVersion = '1.7.0'
androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.15.0'
androidxFragmentVersion = '1.8.4'
coreSplashScreenVersion = '1.0.1'
androidxWebkitVersion = '1.12.1'
junitVersion = '4.13.2'
androidxJunitVersion = '1.2.1'
androidxEspressoCoreVersion = '3.6.1'
cordovaAndroidVersion = '10.1.1'
更新Google服务插件
# build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:8.2.1'
- classpath 'com.google.gms:google-services:4.4.0'
+ classpath 'com.google.gms:google-services:4.4.2'
升级Gradle插件至8.7.2
# build.gradle
dependencies {
- classpath 'com.android.tools.build:gradle:8.2.1'
+ classpath 'com.android.tools.build:gradle:8.7.2'
更新Gradle Wrapper至8.11.1
# gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-82.1-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
更新Kotlin版本
若项目使用Kotlin,请将kotlin_version
变量更新为'1.9.25'
。
在configChanges中添加navigation
此为非强制变更,用于防止部分设备在使用蓝牙键盘时导致应用重启。在AndroidManifest.xml
中的appactivity
内为configChanges
添加navigation
:
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"
插件更新
所有插件均已升级至7.0.0版本,请确保更新至最新版本。
以下插件功能已修改或移除,请相应调整代码:
Action Sheet
androidxMaterialVersion
变量更新为1.12.0
App
- 已弃用类型
AppRestoredResult
移除,改用RestoredListenerEvent
- 已弃用类型
AppUrlOpen
移除,改用URLOpenListenerEvent
Browser
androidxBrowserVersion
变量更新为1.8.0
Camera
androidxExifInterfaceVersion
变量更新为1.3.7
androidxMaterialVersion
变量更新为1.12.0
Device
getInfo()
不再返回diskFree
、diskTotal
、realDiskFree
和realDiskTotal
,可移除该插件的PrivacyInfo.xcprivacy
条目- 已弃用类型
DeviceBatteryInfo
移除,改用BatteryInfo
- 已弃用类型
DeviceLanguageCodeResult
移除,改用GetLanguageCodeResult
Geolocation
playServicesLocationVersion
变量更新为21.3.0
Haptics
- 已弃用类型
HapticsImpactOptions
移除,改用ImpactOptions
- 已弃用类型
HapticsNotificationOptions
移除,改用NotificationOptions
- 已弃用类型
HapticsNotificationType
移除,改用NotificationType
- 已弃用类型
HapticsImpactStyle
移除,改用ImpactStyle
Push Notifications
firebaseMessagingVersion
变量更新为24.1.0
Share
androidxCoreVersion
变量更 新为1.15.0
Splash Screen
- 已弃用类型
SplashScreenShowOptions
移除,改用ShowOptions
- 已弃用类型
SplashScreenHideOptions
移除,改用HideOptions
Status Bar
setOverlaysWebView()
和setBackgroundColor()
现支持iOS平台androidxCoreVersion
变量更新为1.15.0