はじめに
最近、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
を使用
エラー内容
何やら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"
対応
以下どちらかで対応
対応①: url_launcher のバージョンを上げる
以下のコマンドを実行し、url_launcher パッケージを最新バージョンにアップデートします。
flutter pub upgrade url_launcher
flutter clean
flutter pub get
対応②: pubspec.lock を削除する
-
pubspec.lock
ファイルを削除してから、その後、flutter pub get
を実行します。 - 更新された 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"