Flutterを2.2.3から2.10.3にアップグレードして発生したエラー対応記録

2022/3/24〜3/26 Flutter エラー・バグ日記 

エラー対応を懸念して、かなりの期間、アップグレードしていなかったが、さすがにバージョンが古すぎて、パッケージの使用に支障が出始めたので、意を決して実施。

 

null safety対応以来のアップグレード。エラー三昧を覚悟していたが、予想どおり色々あったのでメモ(解決できなかった事案もあり)。

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかは載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

Androidでのビルドエラー

①既存プロジェクトをビルドしたら、以下のエラーが発生。

 

FAILURE: Build failed with an exception.
* What went wrong:Execution failed for task ‘:app:checkDebugAarMetadata’.> Multiple task action failures occurred:   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction  > The minCompileSdk (31) specified in a  dependency’s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module’s compileSdkVersion (android-30). 
Dependency: androidx.window:window-java:1.0.0-beta04.
・・・(略)・・・

 

下記の情報を参考にさせていただき、「android/app/build.gradle」「compileSdkVersion」「targetSdkVersion」をいずれも30→31に修正したら解消。

 

 

②再度ビルドすると、以下のエラーが発生。

 

e: Incompatible classes were found in dependencies. Remove them from the classpath or use ‘-Xskip-metadata-version-check’ to suppress errorse: /Users/・・・・/.gradle/caches/transforms-2/files-2.1/・・・・/jetified-kotlinx-coroutines-core-jvm-1.5.2.jar!/META-INF/kotlinx-coroutines-core.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
・・・(略)・・・
[!] Your project requires a newer version of the Kotlin Gradle plugin.                       │
│ Find the latest version on https://kotlinlang.org/docs/gradle.html#plugin-and-versions, then │
│ update /Users/・・・・/android/build.gradle: │
│ ext.kotlin_version = ”       
   
・・・(略)・・・

 

下記の情報を参考に、「android/build.gradle」の中の「ext.kotlin_version」を’1.3.50’→‘1.6.0’に修正したら解消し、無事ビルド成功。

 

 

③続けて、別の既存プロジェクトをビルドしたところ、以下のエラーが発生。

 

Running Gradle task ‘assembleDebug’…
../../flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.2/lib/src/interface/local_platform.dart:46:19: Error: Member not found: ‘packageRoot’.
      io.Platform.packageRoot; // ignore: deprecated_member_use
                  ^^^^^^^^^^^
FAILURE: Build failed with an exception.

* Where:Script ‘/Users/・・・・/flutter/packages/flutter_tools/gradle/flutter.gradle’ line: 1102
・・・(略)・・・

 

下記の情報を参考に、ターミナルから「flutter pub upgrade」を実行したら、解消。

 

 

④さらに、別の既存プロジェクトをビルドすると、上記③と同じエラーが出たため、「flutter pub upgrade」をやると、今度は、以下のエラーが発生。

 

Resolving dependencies…
Git error. Command: git fetch
stdout:
stderr: fatal: remote error:
  The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
exit code: 128
pub finished with exit code 69

 

下記情報によると、「pubspec.yaml」の中に、GitHubのアドレスを直接指定してインポートしている箇所があり、その記述方法に修正が必要らしい(プロトコルが変更されたことが要因)。

 

 

具体的には、以下のように修正したら解消(この修正をしなくても動く既存プロジェクトもあるので、詳細はやや不明。。)。

 

# 修正前
ext_storage:
    git:
      url: git://github.com/GitJournal/ext_storage.git
# ↓
# 修正後
ext_storage:
    git:
        url: https://github.com/GitJournal/ext_storage

 

⑤再度ビルドすると、今度は以下のエラー。

 

/Users/・・・・/android/app/src/main/AndroidManifest.xml Error:
Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

FAILURE: Build failed with an exception.
・・・(略)・・・

 

再度、下記の情報を参考にさせていただき、

 

 

「AndroidManifest.xml」ファイルの「<activity」タグに、以下を追加したら、無事解消。

 

android:exported="true"

 

iOSでのビルドエラー

①既存プロジェクトをビルドしたら、以下のエラーが発生。

 

Lexical or Preprocessor Issue
‘Flutter/Flutter.h’ file not found

 

初めて見るエラー。。

 

iOSビルドエラーの定番対応である「flutter clean」→「pub get」→iosフォルダで「pod install」をやったら解消できた。

 

②しかし、別の既存プロジェクトでは、上記①の「pod install」で、以下のエラーが発生。

 

[!] CocoaPods could not find compatible versions for pod “Firebase/Auth”:
  In snapshot (Podfile.lock):
    Firebase/Auth (= 8.8.0)
In Podfile:
    firebase_auth (from .symlinks/plugins/firebase_auth/ios) was resolved to 3.3.11, which depends on
      Firebase/Auth (= 8.11.0)
You have either:
・out-of-date source repos which you can update with pod repo update or with pod install --repo-update.
・changed the constraints of dependency Firebase/Auth inside your development pod firebase_auth.
   You should run pod update Firebase/Auth to apply changes you’ve made.

 

これは「CocoaPods」と「Firebase/Auth」のバージョン不整合が原因のようなので、今回のFlutterアップグレードとは関係ないかもしれない。

 

過去にも対応経験がある、「Podfile.lock」削除 →「flutter clean」実行 →「pub get」をした上で、

 

pod install --repo-update

 

を実行したら、無事解消できた。

 

その他のエラー(未解決)

アップグレード前は問題なく機能していた「googleapis_auth」パッケージを用いたGoogleサインイン画面へのアクセス(「firebase_auth」や「google_sign_in」パッケージを用いずに、ブラウザ経由でサインインする方法)が、

 

承認エラー
エラー400: invalid_request

 

となり、できなくなってしまった。。

 

※「firebase_auth」や「google_sign_in」を使ったサインインは、これまでどおり問題なく機能している。

 

「http」など、関連する他のパッケージのバージョンも最新になっている。逆に、ダウングレードして試しても同じ結果。

 

クライアントIDの指定や、GCP(Google Cloud Platform)上の設定を色々見直すも、解消せず。

 

ネット上もかなり探したが、同じ状況(Flutterアップグレード後の不具合)を報告する情報や、参考になる情報は見つからない。

 

「google_sign_in」パッケージが、デスクトップアプリに対応していないため、「googleapis_auth」単独でサインインできる方法は、重宝していたのだが。。。

 

いったんペンディングで、また後日調査。。

 

\ Flutterの学習で役立ったコンテンツ・書籍 /

 

 

 


Dart入門 – Dartの要点をつかむためのクイックツアー
タイトルとURLをコピーしました