4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2024-10-25

はじめに

最近、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 を削除する

  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"
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?