在您的插件中更新 Capacitor 至 8.0 版本
使用 @capacitor/plugin-migration-v7-to-v8
在插件文件夹中运行 npx @capacitor/plugin-migration-v7-to-v8@latest,它将自动执行所有文件更改。
手动更新文件
更新 Capacitor 依赖项
将 devDependencies 中的 @capacitor/cli、@capacitor/core、@capacitor/android 和 @capacitor/ios 更新为 ^8.0.0。
将 peerDependencies 中的 @capacitor/core 更新为 >=8.0.0。
更新 Android 插件变量
在您的 build.gradle 文件中,更新以下包版本:
ext {
+ // 注意:以下部分依赖是可选的 - 只添加/更新您的插件实际使用的那些。
+ // 如果您使用以下任何依赖项,请将它们更新到如下所示的版本。
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
- androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.0'
+ androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.1'
- androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.2.1'
+ androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.3.0'
- androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.6.1'
+ androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.7.0'
+ androidxActivityVersion = project.hasProperty('androidxActivityVersion') ? rootProject.ext.androidxActivityVersion : '1.11.0'
+ androidxCoordinatorLayoutVersion = project.hasProperty('androidxCoordinatorLayoutVersion') ? rootProject.ext.androidxCoordinatorLayoutVersion : '1.3.0'
+ androidxCoreVersion = project.hasProperty('androidxCoreVersion') ? rootProject.ext.androidxCoreVersion : '1.17.0'
+ androidxFragmentVersion = project.hasProperty('androidxFragmentVersion') ? rootProject.ext.androidxFragmentVersion : '1.8.9'
+ firebaseMessagingVersion = project.hasProperty('firebaseMessagingVersion') ? rootProject.ext.firebaseMessagingVersion : '25.0.1'
+ androidxBrowserVersion = project.hasProperty('androidxBrowserVersion') ? rootProject.ext.androidxBrowserVersion : '1.9.0'
+ androidxMaterialVersion = project.hasProperty('androidxMaterialVersion') ? rootProject.ext.androidxMaterialVersion : '1.13.0'
+ androidxExifInterfaceVersion = project.hasProperty('androidxExifInterfaceVersion') ? rootProject.ext.androidxExifInterfaceVersion : '1.4.1'
+ coreSplashScreenVersion = project.hasProperty('coreSplashScreenVersion') ? rootProject.ext.coreSplashScreenVersion : '1.2.0'
+ androidxWebkitVersion = project.hasProperty('androidxWebkitVersion') ? rootProject.ext.androidxWebkitVersion : '1.14.0'
}
将 targetSDK / compileSDK 更新到 36,minSDK 更新到 24
# build.gradle
android {
- compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 35
+ compileSdk = project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 36
defaultConfig {
- minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 23
+ minSdkVersion = project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 24
- targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 35
+ targetSdkVersion = project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 36
...
}
}
将 gradle 插件更新到 8.13.0
dependencies {
- classpath 'com.android.tools.build:gradle:8.7.2'
+ classpath 'com.android.tools.build:gradle:8.13.0'
}
将 gradle wrapper 更新到 8.14.3
# gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
更新 Gradle 属性赋值语法
Gradle 8 弃用了属性赋值的空格语法。将所有属性赋值更新为使用 = 运算符。更多详情请参阅 Gradle 升级指南。
以下属性通常需要从空格赋值更新为 = 赋值:
# build.gradle
repositories {
mavenCentral()
maven {
- url "https://plugins.gradle.org/m2/"
+ url = "https://plugins.gradle.org/m2/"
}
}
android {
- compileSdk 36
+ compileSdk = 36
- namespace 'com.example.plugin'
+ namespace = 'com.example.plugin'
}
lintOptions {
- abortOnError false
+ abortOnError = false
}
注意:属性赋值必须使用 = 运算符。方法调用(如 mavenCentral())保持不变,不使用 = 运算符。
更新到 Java 21(推荐)
我们建议使用 Java 21 以获得与 Android Gradle Plugin 8.13.0 和 Android SDK 36 的最佳兼容性,不过也支持 Java 17+。
# build.gradle
compileOptions {
- sourceCompatibility JavaVersion.VERSION_17
+ sourceCompatibility JavaVersion.VERSION_21
- targetCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_21
}
更新 kotlin_version
如果您的插件使用 Kotlin,请将默认的 kotlin_version 更新为 2.2.20。这是从 Kotlin 1.x 进行的一次重大版本升级,包含破坏性更改。
# build.gradle
buildscript {
- ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.9.25'
+ ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '2.2.20'
repositories {
Kotlin 2.2 的破坏性变更
Kotlin 2.2.0 包含了一些相对于 Kotlin 1.x 的破坏性变更。以下是需要注意的关键变化:
kotlinOptions{}块:Gradle 中的kotlinOptions{}块已被弃用并会引发错误。请将其替换为compilerOptions{}块(如下所示)。- 移除
kotlin-android-extensions插件:kotlin-android-extensions插件已被移除。对于Parcelable实现,请使用kotlin-parcelize插件;对于合成视图,请使用 Android Jetpack 的视图绑定。
有关完整的破坏性变更列表和迁移指导,请参阅 Kotlin 2.2.0 发布说明。
将 kotlinOptions 更新为 compilerOptions
Kotlin 2.0+ 要求使用新的 compilerOptions API 而不是 kotlinOptions。android {} 内的 kotlinOptions 块已被弃用。
# build.gradle
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+
android {
...
- kotlinOptions {
- jvmTarget = '17'
- }
}
+ kotlin {
+ compilerOptions {
+ jvmTarget = JvmTarget.JVM_21
+ }
+}
注意:如果您使用的是 Java 21(推荐),请使用 JvmTarget.JVM_21,或者使其与您的 Java 版本匹配。支持 Java 17+,但推荐使用 Java 21 以获得最佳兼容性。
更新 google services 插件
# build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:8.13.0'
- classpath 'com.google.gms:google-services:4.4.2'
+ classpath 'com.google.gms:google-services:4.4.4'
将 iOS 部署目标提高到 15
更新您插件的 .podspec 文件
- s.ios.deployment_target = '14.0'
+ s.ios.deployment_target = '15.0'
支持 SPM 的插件
更新 Package.swift 文件
- platforms: [.iOS(.v14)],
+ platforms: [.iOS(.v15)],