我已經創建了一個示例項目,說明我的問題here。不能使用「供應框架」CocoaPod內部工作區遊樂場
總之,我試圖在工作區的操場內使用「自定義框架」CocoaPod。我認爲這是可能的,但需要一些項目設置的擺弄,我不知道要改變什麼。在Xcode
- 打開
CocoaPods-Test/CocoaPods-Test.xcworkspace
:觀察問題的sample project,請執行下列操作。
- 應該在存儲庫中安裝並提交Pod,但如果需要可以運行
pod install
。 - 請注意,
CocoaPods-Test
目標生成併成功運行,導入PromiseKit
和TwilioChatClient
窗格。 - 導航到工作區內的
Playground.playground
。 - 請注意,在導入
PromiseKit
時,遊樂場執行得很好,但如果導入了TwilioChatClient
,遊樂場執行失敗,並顯示「沒有這樣的模塊」TwilioChatClient'「。
閱讀下面的資源之後:
- https://github.com/CocoaPods/CocoaPods/issues/5334
- https://github.com/CocoaPods/CocoaPods/issues/5215
- https://github.com/CocoaPods/CocoaPods/issues/5563
- https://github.com/CocoaPods/swift/issues/3
- https://github.com/CocoaPods/CocoaPods/issues/4135
- https://github.com/CocoaPods/CocoaPods/issues/2240
- https://github.com/CocoaPods/CocoaPods/issues/6669#issuecomment-300188519
- https://guides.cocoapods.org/using/troubleshooting.html
- https://www.objc.io/issues/6-build-tools/cocoapods-under-the-hood/
我認爲這個問題可能與這樣的事實,TwilioChatClient
是「vendored框架」(見其podspec),這意味着莢目標不創建爲了它。在閱讀了上述資源後,我覺得解決方案已經觸手可及,但我無法弄清楚。
儘管這裏的示例項目說明了我認爲的根本問題,但促使我創建此示例項目的問題稍微複雜一點。
在我的項目中,我創建了一個包含我所有應用程序代碼的框架目標(這樣它就可以導入我的應用程序,也可以使用應用程序資源導入我的遊樂場)。該框架具有pod依賴關係,其中包括PromiseKit
和TwilioChatClient
。操場上的執行錯誤是不同的(「無法查找符號」而不是「沒有這樣的模塊」),因爲我沒有直接導入CocoaPods模塊,而是使用了框架的框架。
我懷疑如果我能解決「沒有這樣的模塊」的問題,它將幫助我解決我的「無法查找符號」問題。
最後,這似乎是一個很好的機會,讓別人似乎不想做的開源貢獻(請參閱討論here)。切線方面,我很願意貢獻一下,但是在閱讀了一些內容後(例如here和here),我不明白CocoaPods究竟發生了什麼,Xcode構建過程等等。任何有助於理解Xcode構建過程的引用以及CocoaPods在底層進行的操作都是值得讚賞的。看起來我所發現的資源要麼是「非常高層次的概述」(我得到的),要麼是「通過源代碼挖掘」,而且兩者之間沒有太多關聯。
當我下載你的項目時,它看起來像在工作區中有兩個Xcode項目。這是打算?這聽起來像你得到它的工作(這是偉大的!),但我無法在我的最終重現這一點。 –
他們都在原始項目中,很奇怪......我只是保持它的樣子並添加了解決方案。 – diatrevolo
哦,對不起,我一定是犯了錯誤。我可能會有Xcode 8.3.x與9測試版問題...將再次出手。 –