Flutter3.27.1にアップグレードして発生したエラー対応記録

※当サイトは、アフィリエイト広告を利用しています

エラー対応記録

Flutter3.19.6から、3.27.1にアップグレードした際のエラーについて、対応に苦労した備忘録です。

 

対象APIレベル35(Android15)への更新対応をしている中で、Flutter SDK自体のアップグレードが必要になりました。

「対象APIレベル35(Android15)への更新時のエラー対応記録」からの続き記事です。

 

Web上の情報やChat-GPT等を使っても解決しきれず、試行錯誤したので、同じ状況に直面した方のご参考になれば幸いです。

 

必要な対応事項は、主に以下3点でした。

 

  • パッケージのアップグレード(依存関係不整合への対応)
  • Kotlinのバージョンを2.0.0にする
  • パッケージのダウングレード(ビルド時のエラー対応)

 

恥ずかしながら、3点目(パッケージのダウングレード)になかなか気づけず、とても苦労しました。

 

以降、自分が対応した過程に沿って、記載します。

 

前提とする環境

  • PC:MacBook Pro(Intel Core i5)
  • OS:macOS Sonoma 14.5
  • Flutter:3.19.6 → 3.27.1
  • Android Studio:Koala 2024.1.1 Patch 1
  • Gradle関連の記述変更は対応済(下記公式ページの対応)

 

 

3.27.1に上げた理由

API35(Android15)対応をしている際、本当は、「3.19.6」のまま切り抜けたかったのですが、エラーが発生しているパッケージについて、Flutter SDKを「3.2x」以上にしないと、アップグレードできない状況だっため、やむなく上げることにしました。

  

2025年8月時点のFlutter SDKの最新版(安定版)は「3.32.8」ですが、できる限り変更影響を少なくしたかったのと、他に開発していたアプリでは、既に「3.27.1」を使っていた事もあり、「3.27.1」を選択しました。

 

対応①:pub get のエラー(依存関係不整合)対応

Flutterのバージョンを「3.27.1」に上げ、当初予定していたパッケージのバージョンを上げたところ、「pub get」した点で、恒例のパッケージ間の依存関係エラーが生じました。

 

結果、自分のアプリの場合、下記パッケージについて、表記のとおりバージョンを上げる必要がありました。

  • intl: 0.18.1 → 0.19.0
  • share_plus: 8.0.3 → 10.1.4
  • http: 0.13.6 → 1.4.0
  • oktoast: 3.3.1 → 3.4.0
  • flutter_archive: 5.0.0 → 6.0.3

 

対応②:Kotlinのバージョンを2.0.0にする

対応①の後、ビルドすると、以下のエラーが出ました。

 

e: file:///Users/####/.gradle/caches/8.9/transforms/####/transformed/jetified-play-services-measurement-api-22.5.0-api.jar!/META-INF/java.com.google.android.gmscore.integ.client.measurement_api_measurement_api.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.8.0.
e: file:///Users/####/.gradle/caches/8.9/transforms/####/transformed/jetified-play-services-measurement-impl-22.5.0-api.jar!/META-INF/java.com.google.android.gms.libs.filecompliance.proto_file_access_api_type_kt_proto_lite.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.8.0.
e: file:///Users/####/.gradle/caches/8.9/transforms/####/transformed/jetified-play-services-measurement-impl-22.5.0-api.jar!/META-INF/third_party.kotlin.protobuf.src.commonMain.kotlin.com.google.protobuf.kotlin_only_for_use_in_proto_generated_code_its_generator_and_tests.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.8.0.
e: file:///Users/####/.gradle/caches/8.9/transforms/####/transformed/jetified-play-services-measurement-impl-22.5.0-api.jar!/META-INF/third_party.kotlin.protobuf.src.commonMain.kotlin.com.google.protobuf.kotlin_shared_runtime.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.8.0.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':firebase_analytics:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

 

「firebase_analytics」パッケージにて、Kotlinのバージョン不整合が発生しているようです。

 

調査の結果、下記の情報や

 

 

 

Chat-GPTに尋ねた回答を参考に、

 

「android/settings.gradle」の「plugins」ブロックに記述するKotlinのバージョンを「2.0.0」に上げました。

 

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0" // apply true
    id "com.android.application" version "8.5.0" apply false

    // 元々の記述
    // id "org.jetbrains.kotlin.android" version "1.8.22" apply false
    // ↓こちら(2.0.0)に更新
    id "org.jetbrains.kotlin.android" version "2.0.0" apply false

    id "com.google.gms.google-services" version "4.3.14" apply false
    id "com.google.firebase.crashlytics" version "2.8.1" apply false
}

※2025年8月時点では、Kotlinの最新バージョンは「2.2.0」ですが、最新版にすると、別の不整合エラーも発生したため、「2.0.0」に留めました。

 

対応③:別パッケージでビルド時に発生したエラーへの対応

対応②の結果、「firebase_analytics」に関するエラーは解消されましたが、今度は、使用していた「pdfx」というパッケージに関して、以下のエラーが発生しました。

 

e: file:///Users/####/.pub-cache/hosted/pub.dev/pdfx-2.9.2/android/src/main/kotlin/io/scer/pdfx/Messages.kt:256:37 Class '<anonymous>' is not abstract and does not implement abstract member 'onSurfaceDestroyed'.
e: file:///Users/####/.pub-cache/hosted/pub.dev/pdfx-2.9.2/android/src/main/kotlin/io/scer/pdfx/Messages.kt:267:13 'onSurfaceCleanup' overrides nothing.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pdfx:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

 

これもKotlinのバージョン不整合っぽいですが、既にKotlinのバージョンは、「対応①」で実施済なので、再度修正すると、堂々巡りになりそうです。。

※前述のとおり、対応①でKotlinのバージョンを「2.2.0」まで上げると、別のパッケージでエラーが出るので、できませんでした。

 

そのため、「pdfx」のバージョンを上げる事で解消しようとしましたが、既に、この時点の最新版(2.9.2)になっており、アップグレードできませんでした(但し、後述のとおり、本当は逆の発想を持つべきだったのですが...)。

 

ここでかなり詰まりました。。

 

設定ファイルに追記するも解消できず

調査した下記情報や、Chat-GPTからのアドバイスなども踏まえ、設定系ファイルに様々な追記を試みましたが、エラーを解消できませんでした。

 

 

 

例えば、「android/build.gradle」に、以下の記述を追記して、モジュールレベルに対して、現行のKotlinのバージョンを維持しつつ、Javaの特定バージョンを強制適用する方法を試みましたが、解消できませんでした。

※「flutter clean」、「gradlew clean」、「gradlew cleanBuildCache」など、キャッシュ削除系を実行してもエラーは変わらずでした。

 

subprojects { project ->
    if (project.plugins.hasPlugin("com.android.library") || project.plugins.hasPlugin("com.android.application")) {
        project.android {
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_17
                targetCompatibility JavaVersion.VERSION_17
            }
        }
    }

    if (project.plugins.hasPlugin("kotlin-android")) {
        project.tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
            kotlinOptions {
                jvmTarget = "17"
                freeCompilerArgs += [
                    "-Xjvm-default=all",
                    "-opt-in=kotlin.RequiresOptIn",
                    "-Xskip-prerelease-check",
                    "-Xlint:deprecation"
                ]
            }
        }
    }
}

 

パッケージを一旦削除して、エラー要因を特定

設定ファイルを修正すると、今後は「pdfx」以外のパッケージに対して新たなエラーが発生し、原因の特定が難しくなりました。

 

試行錯誤の末、まずは最初にエラーの出た「pdfx」を削除し(いったん「pubspec.yaml」上でコメントアウト)、「pdfx」を使ったコードも全てコメントアウトして、ビルドしてみました。

するとエラーは出ず、ビルドが成功したので、改めてエラー原因は「pdfx」のみであると判断できました。

 

いっそパッケージを変更してしまおうか...とも考えましたが、ふと、バージョンを下げてみたらどうか…と思い、試したところ、

 

pdfx: 2.9.2 → 2.8.0

 

に下げたら、エラーが解消され、ようやくビルドする事ができました。

  

Flutter3.27.1へのアップグレードは、API35(Android15)対応に端を発した事なので、ここに辿り着くまで長かったです。。

 

API35(Android15)対応をした際の内容は、以下に整理していますので、よろしければご参照ください。

 

  

最後に

AndroidのAPIレベルや、FlutterのSDKのバージョンを上げたので、パッケージもバージョンを上げる方向しか思いつかなかったのですが、逆に下げてみる、という事に気づけず、時間を要してしまいました。。

  

よく考えると、「pdfx」の最新バージョンは、Flutter 3.27.1のリリースよりも、かなり後にリリースされているので、「pdfx」が求めるKotlinのバージョンに、Flutterの方が追いついていなかったのかもしれません(まだ考察・調査しきれていないので、理解が違っているかもしれませんが...)。

※対応①で、Kotlinを最新バージョンにしなかった訳なので、それなら「pdfxの方を下げて合わせるべき」と早く気づけたら良かったのですが...。

 

また、パッケージ関連でエラーが出たときは、当該パッケージを一旦削除して、エラー要因がそのパッケージのみに限定されるのか否かを見極める事も重要だと感じました。

 

本来は、Flutter、Kotlin、各パッケージなど、全てをその時点の最新版に揃えるのが理想かもしれませんが、様々な事情で、難しいケースが多いと思うので、そうした場合の対処法として、覚えておくようにしたいと思います。

 

以上、どなたかのご参考になれば幸いです。

 

 

 

リリースしたアプリ(全てFlutterで開発)

 

個人アプリ開発で役立ったもの

おすすめの学習教材

超初心者向けでオススメな元Udemyの講座/

 

 \キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 - Dartの要点をつかむためのクイックツアー

コメント

タイトルとURLをコピーしました