概要
認証デバイス(authentication_device)が、現行の Flutter でビルドできない。
依存が 2021 年頃の版で固定されており、flutter build web がコンパイル エラー 10 件で失敗する。
#205(Web Push / PWA による代替)の前提として、依存とコードをまとめて更新する。
エラーはどれも Dart のコンパイル段階で出ていて、プラットフォームとは関係ない。
ネイティブ(Android)版も同じ理由でビルドできないと見られる
(Android SDK の無い環境で測ったため、flutter build apk は回していない)。
現状
測定環境: Flutter 3.41.9(stable)/ Dart 3.11.5 / Windows 11。
git の管理下にあるファイルだけを別のディレクトリに書き出して測った。
flutter pub get : 成功
pubspec.yaml の sdk: ">=2.12.0 <3.0.0" は障害にならない。
Dart 3 は、下限が 2.12 以上なら上限 <3.0.0 を <4.0.0 と読み替えるため。
→ ANALYSIS.md 6 節の「pub get の時点で解決できない可能性が高い」は、実測と異なる。
flutter build web : 失敗(コンパイル エラー 10 件)
| 発生箇所 |
件数 |
内容 |
file 6.1.2(推移的依存) |
4 |
File.create / createSync の exclusive 引数に追随していない |
firebase_core_platform_interface 4.0.1 |
2 |
削除された hashValues を使っている |
firebase_core 1.2.1 |
1 |
同上 |
url_launcher_web 2.0.0 |
1 |
platformViewRegistry が未定義 |
platform 3.0.0 |
1 |
削除された Platform.packageRoot を使っている |
lib/common/my_elevatedbutton.dart:19(アプリ) |
1 |
削除された styleFrom(primary:) を使っている |
アプリ側 1 件、依存側 9 件。 依存側はパッケージの版上げでしか直らない。
flutter pub outdated(直接依存)
| パッケージ |
現在 |
最新 |
firebase_messaging |
10.0.1 |
16.6.0 |
flutter_appauth |
1.0.0 |
12.1.0 |
flutter_local_notifications |
6.0.0 |
22.3.0 |
http |
0.13.3 |
1.6.0 |
shared_preferences |
2.0.6 |
2.5.5 |
url_launcher |
6.0.4 |
6.3.2 |
cupertino_icons |
1.0.3 |
1.0.9 |
廃止済みのパッケージにも依存している(js / pedantic / shared_preferences_macos)。
firebase_core は lib/main.dart:8 で import しているが、pubspec.yaml の直接依存に無い(推移的依存で解決されている)。
ANALYSIS.md 6 節が指摘する破壊的変更(AndroidNotificationDetails の位置引数など)も、この更新で踏む。
対応
- 直接依存を、まとめて最新のメジャー版へ上げる。
部分的な版上げはしない(ANALYSIS.md 6 節・9 節)
- 破壊的変更に追随する(
styleFrom(primary:)、AndroidNotificationDetails の引数 など)
pubspec.yaml の SDK 制約を Dart 3 に合わせる
firebase_core を直接依存に加える
- Android のビルド設定(
compileSdkVersion / targetSdkVersion が 30、Gradle)を、上げた依存が要求する版に合わせる
ANALYSIS.md の 6・7・9 節を実測に合わせて直す
web 対応そのもの(ログインの差し替え、Service Worker、VAPID)は #205 で扱い、本件には含めない。
flutter_appauth は最新版でも web に対応していないが、本件の目的はビルドを通すことまでとする。
検証
flutter pub get / flutter analyze / flutter build web が通ること(エラー 0。analyze の警告の件数を記録する)
- Android :
flutter build apk --debug。Android SDK が必要。 無い環境で作業した場合は「未検証」と明記する
- サーバ側(MPAS)は変更しないため、MPAS のビルドと E2E は不要
利用者への影響
製品(MPAS)の動作への影響は無し。 認証デバイスはサンプル / テスト用のアプリ。
認証デバイスをビルドする開発者は、更新後は現行の Flutter が必要になる
(当時の Flutter 2.x ではビルドできなくなる見込み)。
概要
認証デバイス(
authentication_device)が、現行の Flutter でビルドできない。依存が 2021 年頃の版で固定されており、
flutter build webがコンパイル エラー 10 件で失敗する。#205(Web Push / PWA による代替)の前提として、依存とコードをまとめて更新する。
エラーはどれも Dart のコンパイル段階で出ていて、プラットフォームとは関係ない。
ネイティブ(Android)版も同じ理由でビルドできないと見られる
(Android SDK の無い環境で測ったため、
flutter build apkは回していない)。現状
測定環境: Flutter 3.41.9(stable)/ Dart 3.11.5 / Windows 11。
git の管理下にあるファイルだけを別のディレクトリに書き出して測った。
flutter pub get: 成功pubspec.yamlのsdk: ">=2.12.0 <3.0.0"は障害にならない。Dart 3 は、下限が 2.12 以上なら上限
<3.0.0を<4.0.0と読み替えるため。→
ANALYSIS.md6 節の「pub getの時点で解決できない可能性が高い」は、実測と異なる。flutter build web: 失敗(コンパイル エラー 10 件)file6.1.2(推移的依存)File.create/createSyncのexclusive引数に追随していないfirebase_core_platform_interface4.0.1hashValuesを使っているfirebase_core1.2.1url_launcher_web2.0.0platformViewRegistryが未定義platform3.0.0Platform.packageRootを使っているlib/common/my_elevatedbutton.dart:19(アプリ)styleFrom(primary:)を使っているアプリ側 1 件、依存側 9 件。 依存側はパッケージの版上げでしか直らない。
flutter pub outdated(直接依存)firebase_messagingflutter_appauthflutter_local_notificationshttpshared_preferencesurl_launchercupertino_icons廃止済みのパッケージにも依存している(
js/pedantic/shared_preferences_macos)。firebase_coreはlib/main.dart:8で import しているが、pubspec.yamlの直接依存に無い(推移的依存で解決されている)。ANALYSIS.md6 節が指摘する破壊的変更(AndroidNotificationDetailsの位置引数など)も、この更新で踏む。対応
部分的な版上げはしない(
ANALYSIS.md6 節・9 節)styleFrom(primary:)、AndroidNotificationDetailsの引数 など)pubspec.yamlの SDK 制約を Dart 3 に合わせるfirebase_coreを直接依存に加えるcompileSdkVersion/targetSdkVersionが 30、Gradle)を、上げた依存が要求する版に合わせるANALYSIS.mdの 6・7・9 節を実測に合わせて直すweb 対応そのもの(ログインの差し替え、Service Worker、VAPID)は #205 で扱い、本件には含めない。
flutter_appauthは最新版でも web に対応していないが、本件の目的はビルドを通すことまでとする。検証
flutter pub get/flutter analyze/flutter build webが通ること(エラー 0。analyzeの警告の件数を記録する)flutter build apk --debug。Android SDK が必要。 無い環境で作業した場合は「未検証」と明記する利用者への影響
製品(MPAS)の動作への影響は無し。 認証デバイスはサンプル / テスト用のアプリ。
認証デバイスをビルドする開発者は、更新後は現行の Flutter が必要になる
(当時の Flutter 2.x ではビルドできなくなる見込み)。