🚨
Flutterビルド時のInclude of non-modular headerエラーへの対応方法
ビルドエラーの発生
今朝、iOS 18やXcode 16がリリースされました。
開発しているFlutterアプリが問題なく動作するか確認するため、Xcodeをアップデートした後、flutter build ios
を実行したところ、以下のエラーが発生しビルドに失敗しました 😱
Lexical or Preprocessor Issue (Xcode): Include of non-modular header inside framework module 'firebase_messaging.FLTFirebaseMessagingPlugin'
調査
調べてみると、Issueがいくつか上がっていました。
Issueには、Xcode上で以下の設定をYESにすることで解消されるとありましたが、自分の環境ではそもそも、その項目が見つかりませんでした。
Runner > Build Settings > Apple Clang - Language - Modules > Allow Non-modular includes in Framework Modules
結論
2024/09/20 追記:
torutoさんからコメントをいただきました!
Xcode上では、Build Settingsのフィルターを"Basic"から"All"に変更しないと表示されないようです!
手元でも試してみたところ表示されるようになりました!ありがとうございます!🙏
↓ これまでのやり方も一応残しておきます!
以下のコメントが参考になりました!
ios/Runner.xcodeproj/project.pbxproj
をエディタで開き以下のように編集したところ、無事にビルドできるようになりました!🎉
…
/* Begin XCBuildConfiguration section */
7AF8C0E6B9D2531R4L9M6K2P /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
…
};
};
…
X3Y9Z1Q8W7T5V6U2N4J6H8G /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
…
};
};
…
PQRS5678LMNO1234ABCD9012 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
…
};
};
…
Discussion
Build Settingsのフィルターを"Basic"から"All"にしないと、GUI上で表示されないようです。
ありがとうございます!
手元でも"All"にしたら表示されました!🥳
記事に追記させていただきました!