Blog スタッフブログ

Android Flutter iOS システム開発

[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

Cycle inside my app on XCode 15 beta – developer.apple.com