簡體   English   中英

#if canImport() 不能與 CocoaPods 一起正常工作。 嚴重問題

[英]#if canImport() not working properly with CocoaPods. Serious issue

我們遇到了非常奇怪的問題,這在我們的生產代碼中造成了問題。 基本上,我們已經創建了一個框架,其中幾乎沒有單獨的可選框架。 現在,我們使用以下邏輯從框架訪問代碼:

#if canImport(optionalFramework)
firstMethodFromTheFramework()
secondMethodFromTheFramework()
#endif

問題是,那么我們用CocoaPods分發我們的主框架,即使客戶端集成了額外的Subspec,我們的代碼也無法引用額外的框架..所以它不導入框架,也不調用可選方法。 所以它不能完全工作並產生大量問題......我們根本不明白,為什么IOS開發不允許這樣的功能和這樣的架構?

模塊化框架要好得多,而不是創建巨大的框架,這只會增加規模和復雜性。

如果客戶端集成了它們,也許還有其他方法可以從可選框架訪問框架

我們真的對整個情況感到有點不確定,這對我們的整個項目至關重要。

我再澄清一次:我們的主要框架根本不包括可選框架。 它只使用 #if canImport() 標志。 客戶端應該負責添加 Pod,然后框架應該自動開始執行代碼

我有同樣的問題,它通過以下方式為我解決:

在您的框架中安裝可選的 pod - 讓我們說它是 Alamofire -(您將在最后刪除)這樣您就可以在兩個文件中找到路徑

  1. yourFramwork.debug.xcconfig
  2. yourFramwork.release.xcconfig

FRAMEWORK_SEARCH_PATHS復制這個“${PODS_CONFIGURATION_BUILD_DIR}/Alamofire”

並從HEADER_SEARCH_PATHS復制此“${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers”

把你復制的東西放在任何地方讓我們說筆記文件

現在從框架 podFile 中刪除 pod (Alamofire) 並再次運行pod install

手動過去您在兩個文件中復制的內容:

  1. yourFramwork.debug.xcconfig
  2. yourFramwork.release.xcconfig

就像他們在哪里一樣,如果您將框架添加到另一個項目並在該項目的 podFile 中安裝 optionalFramwork,那么現在就完成了,一切都應該沒問題

#if canImport(optionalFramework)。 應該按照你的需要工作

希望能解決你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM