Skip to content

認証デバイス(authentication_device)を現行の Flutter でビルドできるようにする(依存の更新) #209

Description

@OsscJpDevInfra

概要

認証デバイス(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.yamlsdk: ">=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 / createSyncexclusive 引数に追随していない
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_corelib/main.dart:8 で import しているが、pubspec.yaml の直接依存に無い(推移的依存で解決されている)。

ANALYSIS.md 6 節が指摘する破壊的変更(AndroidNotificationDetails の位置引数など)も、この更新で踏む。

対応

  1. 直接依存を、まとめて最新のメジャー版へ上げる。
    部分的な版上げはしないANALYSIS.md 6 節・9 節)
  2. 破壊的変更に追随する(styleFrom(primary:)AndroidNotificationDetails の引数 など)
  3. pubspec.yaml の SDK 制約を Dart 3 に合わせる
  4. firebase_core を直接依存に加える
  5. Android のビルド設定(compileSdkVersion / targetSdkVersion が 30、Gradle)を、上げた依存が要求する版に合わせる
  6. 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 --debugAndroid SDK が必要。 無い環境で作業した場合は「未検証」と明記する
  • サーバ側(MPAS)は変更しないため、MPAS のビルドと E2E は不要

利用者への影響

製品(MPAS)の動作への影響は無し。 認証デバイスはサンプル / テスト用のアプリ。

認証デバイスをビルドする開発者は、更新後は現行の Flutter が必要になる
(当時の Flutter 2.x ではビルドできなくなる見込み)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions