[英]#if canImport() not working properly with CocoaPods. Serious issue
我們遇到了非常奇怪的問題,這在我們的生產代碼中造成了問題。 基本上,我們已經創建了一個框架,其中幾乎沒有單獨的可選框架。 現在,我們使用以下邏輯從框架訪問代碼:
#if canImport(optionalFramework)
firstMethodFromTheFramework()
secondMethodFromTheFramework()
#endif
問題是,那么我們用CocoaPods分發我們的主框架,即使客戶端集成了額外的Subspec,我們的代碼也無法引用額外的框架..所以它不導入框架,也不調用可選方法。 所以它不能完全工作並產生大量問題......我們根本不明白,為什么IOS開發不允許這樣的功能和這樣的架構?
模塊化框架要好得多,而不是創建巨大的框架,這只會增加規模和復雜性。
如果客戶端集成了它們,也許還有其他方法可以從可選框架訪問框架?
我們真的對整個情況感到有點不確定,這對我們的整個項目至關重要。
我再澄清一次:我們的主要框架根本不包括可選框架。 它只使用 #if canImport() 標志。 客戶端應該負責添加 Pod,然后框架應該自動開始執行代碼
我有同樣的問題,它通過以下方式為我解決:
在您的框架中安裝可選的 pod - 讓我們說它是 Alamofire -(您將在最后刪除)這樣您就可以在兩個文件中找到路徑
從FRAMEWORK_SEARCH_PATHS復制這個“${PODS_CONFIGURATION_BUILD_DIR}/Alamofire”
並從HEADER_SEARCH_PATHS復制此“${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers”
把你復制的東西放在任何地方讓我們說筆記文件
現在從框架 podFile 中刪除 pod (Alamofire) 並再次運行pod install
手動過去您在兩個文件中復制的內容:
就像他們在哪里一樣,如果您將框架添加到另一個項目並在該項目的 podFile 中安裝 optionalFramwork,那么現在就完成了,一切都應該沒問題
和#if canImport(optionalFramework)。 應該按照你的需要工作
希望能解決你的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.