跳过主要内容
Capacitor

Updating from Capacitor 4 to Capacitor 5: A Step-by-Step Guide

Learn how to update your project from Capacitor 4 to Capacitor 5 with minimal breaking changes, including updating official plugins and required tools.

文章来源

马丁·多纳迪

作者

瓦莱里亚

审稿人

Jordan

编辑

从 Capacitor 4 升级到 Capacitor 5:一步步指南

相比之前的更新,升级从 Capacitor 4 到 Capacitor 5 的过程涉及最小的破坏性更改。这份指南提供了升级项目到 Capacitor 5 的逐步指南,以及官方插件的破坏性更改列表。

注意: Capacitor 5 需要 NodeJS 16 或更高版本,因为 Node 12 已经到达了末端生命期,Node 14 将于 2023 年 4 月 30 日到达末端生命期。建议使用 NodeJS 的最新 LTS 版本。

  1. 安装 latest 项目中使用的Capacitor CLI的版本。

    npm i -D @capacitor/cli@latest
  2. 运行以下命令让CLI处理迁移:

    npx cap migrate

    如果您安装了 VS __CAPGO_KEEP_0__ 扩展,检查扩展的建议部分以找到迁移项目到 __CAPGO_KEEP_1__ 5 的选项。

  3. 升级 Code 4 iOS 项目到 Capacitor 5

升级 Capacitor 4 iOS 项目到 Capacitor 5

  1. 升级 Xcode: Capacitor 5 需要 Xcode 14.1+.

  2. 更新 .gitignore: 请对您的 .gitignore 文件进行以下修改:

    - App/Podfile.lock
    + App/output
  3. 更新 Assets 以使用单个应用图标:Xcode 14 支持单个应用图标1024x1024。清理 AppIcon.appiconset 中的所有不必要的尺寸。

升级 Capacitor 4 Android 项目到 Capacitor 5

  1. 升级 __CAPGO_KEEP_0__ 4 Android 项目到 __CAPGO_KEEP_1__ 5: Capacitor 5 requires Android Studio Flamingo | 2022.2.1 or newer due to the usage of Gradle 8, which requires Java JDK 17. Java 17 ships with Android Studio Flamingo, so no additional downloads are needed.

  2. : __CAPGO_KEEP_0__ 5 需要 Android Studio Flamingo | 2022.2.1 或更高版本,因为它使用 Gradle 8,Gradle 8 需要 Java JDK 17。Java 17 与 Android Studio Flamingo 一起提供,因此无需额外下载。运行 AGP Upgrade 助手程序 Tools -> AGP Upgrade Assistant.

  3. 更新 Android 项目变量: 在你的 variables.gradle 文件中,更新你的值到以下新最小值:

    minSdkVersion = 22
    compileSdkVersion = 33
    targetSdkVersion = 33
    androidxActivityVersion = '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'
  4. 更新 Google 服务:

    # build.gradle
    dependencies {
    -       classpath 'com.google.gms:google-services:4.3.13'
    +       classpath 'com.google.gms:google-services:4.3.15'
    }
  5. 更新 Gradle 插件到 8.0.0:

    # build.gradle
    dependencies {
    -       classpath 'com.android.tools.build:gradle:7.2.1'
    +       classpath 'com.android.tools.build:gradle:8.0.0'
    }
  6. 更新 Gradle 包装器到 8.0.2:

    # gradle-wrapper.properties
    distributionBase=GRADLE_USER_HOME
    distributionPath=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.zip
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
  7. 禁用 Jetifier:

    # gradle.properties
    android.useAndroidX=true
    - android.enableJetifier=true
  8. 移动包到 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
  9. 更新 androidScheme: 在 Capacitor 6 中, https 将成为现有应用的默认设置,以更好地启用 __CAPGO_KEEP_0__ 应用使用系统 Autofill 功能。为了避免由于此更改而导致的数据丢失,请将方案设置为 androidScheme for existing apps to better enable Capacitor applications to use the system Autofill feature. To avoid data loss as a result of this change, set the scheme to http 现在,即使是当前的默认值。

    {
      server: {
        androidScheme: "http"
      }
    }
  10. 更新 Kotlin 版本: 如果您的项目使用 Kotlin,更新 kotlin_version 变量到 '1.8.20'.

插件功能性变化

以下插件功能已修改或删除。更新您的 code 以适应:

  • 动作表单
  • 浏览器
  • 相机
  • 设备
  • 地理位置
  • Google Maps
  • 本地通知
  • 推送通知
  • 状态栏

操作面板

  • 更新 androidxMaterialVersion 变量 1.8.0.

浏览器

  • 更新 androidxBrowserVersion 变量 1.5.0.

相机

  • 在 Android 13 中,添加读取媒体图像权限(<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>) AndroidManifest.xml.
  • 更新 androidxMaterialVersion 变量为 1.8.0.
  • 更新 androidxExifInterfaceVersion 变量为 1.3.6.

设备

  • 更改 DeviceId.uuid 到 DeviceId.identifier.
  • 在 iOS 16+ 中, DeviceInfo.name 许可 地理位置.

地理位置

  • 更新 playServicesLocationVersion 到 21.0.1.

Google Maps

  • 更新以下变量:
    • googleMapsPlayServicesVersion 到 18.1.0.
    • googleMapsUtilsVersion 到 3.4.0.
    • googleMapsKtxVersion 到 3.4.0.
    • googleMapsUtilsKtxVersion 到 3.4.0.
    • kotlinxCoroutinesVersion 到 1.6.4.
    • androidxCoreKTXVersion 到 1.10.0.
    • kotlin_version 到 1.8.20.

本地通知

  • 对于 Android 13,为了在目标版本 SDK 33 上排程本地通知,需要进行新的运行时权限检查。 checkPermissions() 和 requestPermissions() accordingly.

推送通知

  • 对于 Android 13,需要在目标SDK 33 时,调用新的运行时权限检查,以接收推送通知。 checkPermissions() 和 requestPermissions() accordingly.
  • 更新 firebaseMessagingVersion 变量 23.1.2.

状态栏

  • 在 iOS 上,已更改默认状态栏动画为 FADE.

By following these steps and updating your code accordingly, you should now have successfully updated your project from Capacitor 4 to Capacitor 5. Make sure to test your application thoroughly to ensure that all features and plugins are working as expected.

Keep going from Updating from Capacitor 4 to Capacitor 5: A Step-by-Step Guide

如果您正在使用 Updating from Capacitor 4 to Capacitor 5: A Step-by-Step Guide 为了计划原生插件工作,连接它与 Capgo 插件目录 为产品工作流程在Capgo插件目录中 Capacitor 插件由 Capgo 提供 为 Capacitor 插件的实现细节而言,Capgo 添加或更新插件 添加或更新插件 Ionic企业插件替代品 Ionic企业插件替代品中的产品工作流程 Capgo 原生构建 为 Capgo 原生构建流程做准备。

Capacitor

当一个 web 层 bug 活跃时,通过 Capgo 将修复推送给用户,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化保持在正常的审批路径中。

最新博客

Capgo 给您创建真正专业的移动应用所需的最佳见解。