跳到主要内容
版本:v8

在您的插件中更新 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 而不是 kotlinOptionsandroid {} 内的 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)],

使用旧结构的插件

对您的 Xcode 项目执行以下操作:在项目编辑器中选择 Project 并打开 Build Settings 标签页。在 Deployment 部分下,将 iOS Deployment Target 更改为 iOS 15.0。对任何应用 Targets 重复相同的步骤。

然后,打开 ios/Podfile 并将 iOS 版本更新到 15.0:

-platform :ios, '14.0'
+platform :ios, '15.0'

更新 Capacitor SPM 依赖项

在支持 SPM 的插件中,更新 Package.swift 文件以使用版本 8.0.0

    dependencies: [
- .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "7.0.0")
+ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "8.0.0")
],