メインコンテンツまでスキップ
バージョン: v7

コードの破壊的変更

iOS

CAPBridgedPlugin プロトコルの変更点

  • CAPBridgedPlugin のプロトコル要件は、クラスレベルではなくインスタンスレベルに移動されました。
  • また、getMethod(_:)の要件は完全に削除され、内部拡張メソッドに入れられました。
  • pluginMethods は、そのコンテンツについてより具体的になるように更新されました (Any だったものが CAPPluginMethod になりました)。

現状では、CAPBridgedPluginへの適合性を生成するためにマクロを使用するため、大多数のユーザーは何の問題も発生しないはずです。マクロを使用せずに CAPBridgedPlugin にキャストしたり、手動で CAPBridgedPlugin に適合させるユーザーは、影響を受けるでしょう。

Android

PluginCall.getObject() / PluginCall.getArray()

iOSの動作に合わせ、Androidの PluginCall.getObject()PluginCall.getArray() は null を返すことができるようになりました。 プラグイン作成者は、これらのメソッドからの戻り値を処理するコードの周囲で、NULLチェックを行うことをお勧めします。

あなたのプラグインを5.0にアップデートする

@capacitor/plugin-migration-v4-to-v5 を使う

プラグインフォルダからnpx @capacitor/plugin-migration-v4-to-v5@latestを実行すると、すべてのファイルが自動的に変更されます。

手動でファイルをアップデート

package.json をアップデート

@capacitor/cli, @capacitor/core, @capacitor/android@capacitor/ioslatest-5 バージョンにアップデート。

targetSDK / compileSDK を 33 にアップデート

# build.gradle

android {
- compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 32
+ compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33
- targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 32
+ targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 33

Android Plugin 変数をアップデート

あなたの build.gradle ファイルを、以下のminバージョンにアップデートします:

ext {
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
- androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.4.2'
+ androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.6.1'
- androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.3'
+ androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.5'
- androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.4.0'
+ androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.5.1'

gradle plugin を 8.0.0 にアップデート

    dependencies {
- classpath 'com.android.tools.build:gradle:7.2.1'
+ classpath 'com.android.tools.build:gradle:8.0.0'
}

gradle wrapper を 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

パッケージを 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 project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33

Jetifier を無効化

# gradle.properties

# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
- # Automatically convert third-party libraries to use AndroidX
- android.enableJetifier=true

Java 17 にアップデート

# build.gradle
compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
+ sourceCompatibility JavaVersion.VERSION_17
- targetCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_17
}

kotlin_version をアップデート

プラグインで使ってるkotlinのバージョンのデフォルトをアップデートします。

# build.gradle
buildscript {
- ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.7.0'
+ ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '1.8.20'
repositories {

また、org.jetbrains.kotlin:kotlin-stdlib-jdk7 または org.jetbrains.kotlin:kotlin-stdlib-jdk8 依存関係を org.jetbrains.kotlin:kotlin-stdlib に置換します。

# build.gradle
dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"