Framework 專案引入 FirebaseMessaging 找不到模組

Framework importing FirebaseMessaging error: (fatal) module ‘FirebaseMessaging’ not found

在公司建立新的 framework 專案時,發現引入 FirebaseMessaging 使用之後,framework 完全 build 不了,嘗試將近兩週終於找到關鍵拉!!!

Xcode Version: 15.0.1
Firebase Version: 10.24.0
import by SPM / CocoaPods 兩個都試過

error: (fatal) module ‘FirebaseMessaging’ not found

這個文件是編譯時產出的文件,根本也不能改動… BTW 如果是 App 專案引入是不會有問題的呦~

某天腦袋有個小聲音,還是載看看 Xcode14 呢?其實之前有載過14.3.1測試一樣失敗,這次決定載 14.0.1 試試看,然後… Build Succeed !!!

那就朝著 Build Setting 下去尋找問題,14與15不同的地方我改一個 build 一次,土法煉功之下找到關鍵 Apple Clang Module Verifier Options

查詢官方文件表示 Xcode14.3 之後的版本,將預設 ENABLE_MODULE_VERIFIER = No 改為 Yes,這次的引入問題在調整為 No 之後順利成功引入!看起來是編譯時產生的問題,但確切的因果我也搞不懂😶‍🌫️

那麼 Apple Clang Module Verifier 是何方神聖呢?

根據 ChatGPT 的說法,Apple Clang Module Verifier 控制蘋果的 Clang 編譯器模塊驗證器的選項。這些選項影響編譯器如何驗證和處理模塊(Module)。模塊是 C、C++ 和 Objective-C 語言中的一種特性,它們允許將程序的部分進行預編譯和組織,以提高編譯速度和代碼的可重用性。模塊在編譯時被創建,並且它們的正確性和一致性對於構建過程的穩定性和可靠性至關重要。

透過蘋果官方文件可以知道,這個功能開啟能幫助專案內 objectiveC 檔案在還沒 build 之前就先行找到問題,並且顯示在左側的 Issue navigator 上,點擊問題就能直接索引到該檔案出錯的地方,其實就像平常寫 Swift 寫錯了會直接報給你的概念

有大大寫文章說明開啟與否所產生的編譯文件、格式與原因

找資料的過程中意外發現也有別的三方套件有類似問題,他們也有回報了~

祝大家寫扣順順利利,蟲蟲一天就能抓完 🤓

--

--