【Flutter】error: type 'UIApplication' does not conform to protocol 'Launcher'の対応

## はじめに
最近、macOSを `Sonoma 14.6.1` から `Sequoia 15.0.1` にアップデートしました。
新しい macOS Sequoia 15.0 以降では Xcode 16.0 以上が必須とのことだったので、Xcodeも `15.3` から `16.0` にアップデートしました。

しかし、このアップデート後に iOSでタイトルにあるビルドエラーが発生したので、その解決方法を共有します。

## 環境
macOS Sequoia 15.0.1
Xcode 16.0
Flutter 3.24.0
ライブラリ:`url_launcher: 6.2.6`を使用

https://pub.dev/packages/url_launcher

## エラー内容
何やら`error: type 'UIApplication' does not conform to protocol 'Launcher'`と怒られている。
```
Launching lib/main.dart on ******のiPhone in release mode...
Automatically signing iOS for device deployment using specified development team in
Xcode project: ******
Xcode build done.                                           19.1s
Failed to build iOS app
Could not build the precompiled application for the device.
Error output from Xcode build:
↳
    ** BUILD FAILED **
2

Xcode's output:
↳
    Writing result bundle at path:
    	/var/folders/5w/_ppzxztn7t532bbb24nnhjr00000gn/T/flutter_tools.7unoT8/flutter_ios_build_temp_dir29Qymb/temporary_xcresult_bundle

    /Users/******/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/ios/Classes/Launcher.swift:20:1: error: type 'UIApplication' does not conform to
    protocol 'Launcher'
    extension UIApplication: Launcher {}
    ^
    UIKit.UIApplication:24:15: note: candidate has non-matching type '(URL, 
    [UIApplication.OpenExternalURLOptionsKey : Any], (@MainActor @Sendable (Bool) -> 
    Void)?) -> Void'
        open func open(_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey : 
        Any] = [:], completionHandler completion: (@MainActor @Sendable (Bool) -> 
        Void)? = nil)
                  ^
    /Users/******/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.0/ios/Classes/Launcher.swift:13:8: note: protocol requires function 
    'open(_:options:completionHandler:)' with type '(URL, [UIApplication.OpenExternalURLOptionsKey : Any], ((Bool) -> Void)?) -> ()'; add a stub
    for conformance
      func open(
           ^
    Command SwiftCompile failed with a nonzero exit code
    
/// 略
```

## 原因
Xcode 16.0を使用する場合、`url_launcher` パッケージに依存している `url_launcher_ios` のバージョンが `6.3.1` である必要があります。現在のバージョンが `6.3.0` であるため、このエラーが発生しています。

pubspec.lockファイルを確認したところ、以下のように `6.3.0` が使用されていました。
```pubspec.lock
  url_launcher_ios:
    dependency: transitive
    description:
      name: url_launcher_ios
      sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
      url: "https://pub.dev"
    source: hosted
    version: "6.3.0"
```

https://x.com/riscait/status/1836216344137863267

https://github.com/flutter/packages/pull/7100


## 対応
以下どちらかで対応
### 対応①: url_launcher のバージョンを上げる
以下のコマンドを実行し、url_launcher パッケージを最新バージョンにアップデートします。
```
flutter pub upgrade url_launcher
flutter clean
flutter pub get
```

### 対応②: pubspec.lock を削除する
1. `pubspec.lock` ファイルを削除してから、その後、`flutter pub get` を実行します。
2. 更新された pubspec.lock ファイルに、url_launcher_ios が `6.3.1` にアップデートされていることを確認します

```pubspec.lock
  url_launcher_ios:
    dependency: transitive
    description:
      name: url_launcher_ios
      sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
      url: "https://pub.dev"
    source: hosted
    version: "6.3.1"
```