Blog スタッフブログ
[Flutter]FlutterのXcode15対応と三種のエラー対策
こんにちは、株式会社MIXシステム開発担当のBloomです。
今回はXcode15にアップグレードした後にFlutterで発生するエラーを対処していきたいと思います。
早速エラー例を紹介させていただきます。
Error (Xcode): DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead
Xcode15からDT_TOOLCHAIN_DIRの環境変数が利用できなくなっており、TOOLCHAIN_DIRへ差し替える必要があります。Podfileのpost_installのセクションを書き換えましょう。
post_install do |installer|
xcode_base_version = `xcodebuild -version | grep 'Xcode' | awk '{print $2}' | cut -d . -f 1`
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
if config.base_configuration_reference && Integer(xcode_base_version) >= 15
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
end
end
end
end
Lexical or Preprocessor Issue (Xcode): ‘Flutter/Flutter.h’ file not found
Xcode15対応に際してPodfileを書き換えた際に、
flutter_additional_ios_build_settings(target)
の行が欠落している場合にこのエラーが発生します。もし発生した場合は上のサンプルに従って書き足しましょう。
Error (Xcode): Cycle inside Runner; building could produce unreliable results.
Build Phasesにおいて循環参照が発生している場合にこのエラーが出力されますが、Xcode15では実際には循環参照になっていないのに当エラーが発生する場合があるようです。Build Phasesの処理順を変更することで解消します。
Embed Foundation ExtensionsをCopy Bundle Resourcesの後ろへ移動させましょう。
PrivacyInfo対応
エラー対応からは少し外れますが、Xcode15からPrivacyInfoの対応が必要になります。
この記事を参考に、UserDefaultsに関する記載などを追加してください。
これでFlutterプロジェクトをXcode15に対応させることができました。良かったですね。
参考文献
[webview_flutter_wkwebview] ‘Flutter/Flutter.h’ file not found Xcode 15 #135099 – GitHub
XCode 15 Beta 5 with Application Extension Fails to Compile – GitHub