【Flutter】iOS17 で html_editor_enhanced を使えるようにする

こんにちは、knsk765 です。 最近は Flutter アプリの開発(の手伝い)をしていて日々勉強中です。

9月19日に iOS 17 がリリースされ、22日に iPhone 15 が発売されましたね。 私も早速 iPhone 15 Pro を購入したのですが、今までの開発環境のままだと Flutter の実機デバッグができなくなりました。
バージョンアップあるあるですね。

まず、iPhone 15 (iOS 17) でデバッグするためには Xcode と Flutter のバージョンを下記にする必要があります。

  • Xcode: 15.0
  • Flutter: 3.13

まず、iPhone 15 もしくは iOS 17 でのデバッグには Xcode 15 以上が必要です。
そして Xcode 15 を利用するには Flutter のバージョン 3.13 以上が必要です。

このあたりの手順に関しては下記の記事を参考にさせていただきました。ありがとうございます。

zenn.dev

DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS ...

Could not build the precompiled application for the device.
Error (Xcode): DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead

ビルドすると、↑こんなエラーが出るので上記ブログ記事の解決策1 を対応します(Podfile への追記)。

html_editor_enhanced のエラー

それでもまだ下記のようなエラーが出ます。flutter_inappwebview でエラーが出ているようです。

エラー

Could not build the precompiled application for the device.
Error (Xcode): type argument 'nw_proxy_config_t' (aka 'struct nw_proxy_config *') is neither an Objective-C object nor a block type
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.0.sdk/System/Library/Frameworks/WebKit.framework/Headers/WKWebsiteDataStore.h:119:46

Parse Issue (Xcode): Could not build module 'WebKit'
/Users/hogehoge/Documents/fugafuga/build/ios/Debug-Staging-iphoneos/flutter_inappwebview/flutter_inappwebview.framework/Headers/flutter_inappwebview-Swift.h:285:8

inappwebview.dev

ここまでの対応ならば、先ほどの引用元の記事と同じ解決策2 をとることになるのですが、うまくいきませんでした。
弊社で開発しているアプリでは html_editor_enhanced ライブラリを使用しており、依存関係で問題が出ています。

pub.dev

依存関係

根本のエラー原因は html_editor_enhanced ではなく flutter_inappwebview なのですが、html_editor_enhancedflutter_inappwebview を参照しています。
各ライブラリのバージョンと依存関係は下記です。
依存関係は下記コマンドで確認できます。

flutter pub deps

抜粋

├── html_editor_enhanced 2.5.1
│   ├── flex_color_picker 3.1.0
│   │   ├── flex_seed_scheme 1.4.0
│   │   │   ├── collection...
│   │   │   ├── flutter...
│   │   │   └── meta...
│   │   └── flutter...
│   ├── flutter_inappwebview 5.7.2+3
│   │   └── flutter...
│   ├── pedantic 1.11.1
│   ├── pointer_interceptor 0.9.3+4
│   │   └── flutter...
│   ├── visibility_detector 0.3.3
│   │   └── flutter...
│   ├── file_picker...
│   ├── flutter...
│   ├── flutter_keyboard_visibility...
│   ├── meta...
│   └── numberpicker...

解決策

html_editor_enhanced 2.5.1 は最新の flutter_inappwebview 6.x.x ではなく flutter_inappwebview 5.7.2+3 を参照しています。

この方がフォークして上げてくださっている flutter_inappwebview を参照すれば flutter_inappwebview 自体の問題は解決します。 github.com

  flutter_inappwebview:
    git:
      url: https://github.com/vixez/flutter_inappwebview.git
      ref: fix-xcode-17

ただ、この参照先変更を html_editor_enhanced 2.5.1pubspec.yaml で設定しないといけないので、私も同じように html_editor_enhanced 2.5.1 をフォークして flutter_inappwebview の参照先を変更したものをGithub に公開しました。

github.com

デバッグしたいアプリの pubspec.yamlhtml_editor_enhanced 2.5.1 の記述を変更すれば OK。

変更前

  html_editor_enhanced: ^2.5.1

変更後

  html_editor_enhanced:
    git:
      url: https://github.com/knsk765/html-editor-enhanced.git
      ref: fix-ios-17

これで無事 iPhone 15 Pro 実機でデバッグ起動できました!
せっかくだから iOS 17 だからこそできる機能とかも取り入れていきたいですね〜

てなかんじで、インゲージでは Flutter エンジニア絶賛募集中です!