2017-05-23 69 views
6

我已經創建了一個示例項目,說明我的問題here不能使用「供應框架」CocoaPod內部工作區遊樂場

總之,我試圖在工作區的操場內使用「自定義框架」CocoaPod。我認爲這是可能的,但需要一些項目設置的擺弄,我不知道要改變什麼。在Xcode

  • 打開CocoaPods-Test/CocoaPods-Test.xcworkspace

    觀察問題的sample project,請執行下列操作。

  • 應該在存儲庫中安裝並提交Pod,但如果需要可以運行pod install
  • 請注意,CocoaPods-Test目標生成併成功運行,導入PromiseKitTwilioChatClient窗格。
  • 導航到工作區內的Playground.playground
  • 請注意,在導入PromiseKit時,遊樂場執行得很好,但如果導入了TwilioChatClient,遊樂場執行失敗,並顯示「沒有這樣的模塊」TwilioChatClient'「。

閱讀下面的資源之後:

我認爲這個問題可能與這樣的事實,TwilioChatClient是「vendored框架」(見其podspec),這意味着莢目標不創建爲了它。在閱讀了上述資源後,我覺得解決方案已經觸手可及,但我無法弄清楚。

儘管這裏的示例項目說明了我認爲的根本問題,但促使我創建此示例項目的問題稍微複雜一點。

在我的項目中,我創建了一個包含我所有應用程序代碼的框架目標(這樣它就可以導入我的應用程序,也可以使用應用程序資源導入我的遊樂場)。該框架具有pod依賴關係,其中包括PromiseKitTwilioChatClient。操場上的執行錯誤是不同的(「無法查找符號」而不是「沒有這樣的模塊」),因爲我沒有直接導入CocoaPods模塊,而是使用了框架的框架。

我懷疑如果我能解決「沒有這樣的模塊」的問題,它將幫助我解決我的「無法查找符號」問題。

最後,這似乎是一個很好的機會,讓別人似乎不想做的開源貢獻(請參閱討論here)。切線方面,我很願意貢獻一下,但是在閱讀了一些內容後(例如herehere),我不明白CocoaPods究竟發生了什麼,Xcode構建過程等等。任何有助於理解Xcode構建過程的引用以及CocoaPods在底層進行的操作都是值得讚賞的。看起來我所發現的資源要麼是「非常高層次的概述」(我得到的),要麼是「通過源代碼挖掘」,而且兩者之間沒有太多關聯。

回答

3

如果你必須有這項工作,我想出了一個解決方法,在Pods項目中創建一個與供應商框架相同的框架目標,並公開使用它的所有標題,並將框架作爲唯一依賴。我已經分叉你的GH例子並將其鏈接到hereenter image description here enter image description here

這不是最完美的解決方案,但它會幫助你在緊要關頭。

更新 先構建「假」框架,然後構建應用目標,然後去操場。

+0

當我下載你的項目時,它看起來像在工作區中有兩個Xcode項目。這是打算?這聽起來像你得到它的工作(這是偉大的!),但我無法在我的最終重現這一點。 –

+0

他們都在原始項目中,很奇怪......我只是保持它的樣子並添加了解決方案。 – diatrevolo

+0

哦,對不起,我一定是犯了錯誤。我可能會有Xcode 8.3.x與9測試版問題...將再次出手。 –