こんにちは、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 以上が必要です。
このあたりの手順に関しては下記の記事を参考にさせていただきました。ありがとうございます。
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
ここまでの対応ならば、先ほどの引用元の記事と同じ解決策2 をとることになるのですが、うまくいきませんでした。
弊社で開発しているアプリでは html_editor_enhanced
ライブラリを使用しており、依存関係で問題が出ています。
依存関係
根本のエラー原因は html_editor_enhanced
ではなく flutter_inappwebview
なのですが、html_editor_enhanced
は flutter_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.1
の pubspec.yaml
で設定しないといけないので、私も同じように html_editor_enhanced 2.5.1
をフォークして flutter_inappwebview
の参照先を変更したものをGithub に公開しました。
デバッグしたいアプリの pubspec.yaml
で html_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 エンジニア絶賛募集中です!