2017-05-10 39 views
0

我正在開發兩個基於Objective-C的SDK,並且我想要在兩個SDK之間共享通用代碼。我也希望能夠將此通用代碼公開給SDK的使用者。對於我想公開給SDK客戶端的通用代碼,我希望將這些代碼暴露給在Objective-C和Swift中編寫應用程序的開發人員。在基於Objective-C的SDK之間共享代碼

我正在考慮使用Cocoapod來組織基於Objective-C的代碼&已經開始使用pod lib create CommonCode庫。對於這個CommonCode庫,通過Target Membership選項聲明哪些.h文件是公開的,哪些是私有的非常容易。

但是,當將這個CommonCode cocoapod導入其中一個SDK時,我不確定如何通過其中一個SDK公開CommonCode中的.h文件。即 - 我如何確保使用其中一個SDK的開發人員可以訪問CommonCode庫中包含的一些代碼。

這可能與Cocoapods?你會建議我更好地組織我的代碼嗎?

回答

1

可以在應用程序中擁有多個依賴項,但我強烈建議儘量減少庫/框架/ SDK中的依賴項數量。

對於宿主應用程序開發人員來說,這很重要,因爲間接依賴關係可能會導致鏈接或符號解析與其他直接和間接依賴關係衝突,因爲不同依賴項需要不同版本。

如果您需要在兩個框架之間共享一些代碼,請考慮將它們合併到一個工作區中並將您感興趣的文件添加到兩個框架目標中。我不建議公開任何共享內容,因爲在一個應用程序中使用兩個框架時,它可能會導致鏈接或符號解析問題。

另外檢查一個框架是否實際上依賴於另一個 - 那麼明確聲明這個依賴關係是有意義的。

當然,您可以將共享代碼提取到另一個框架中,並明確聲明這種依賴關係 - 這就是您在OP中考慮的內容。這個與CocoaPods相關的共享框架並沒有什麼特別之處,像往常一樣準備。

不要擔心這個間接依賴項對主機應用程序的可見性。如果主機應用程序確實需要訪問共享框架,則應用程序可以明確導入和使用它。

如果您的所有框架都在Objective-C中,則可以嘗試在主框架的傘頭中導入共享框架的傘頭。如果編譯器不會抱怨,那應該做你想做的事情。

我不是在談論CocoaPods黑魔法(飛行中的pod構建設置修改),因爲我認爲你不需要爲了解決問題而惹惱它。

+0

我看到你來自哪裏,試圖限制應用程序的外部依賴關係。我正在開發的兩個SDK不會被合併到同一個應用程序中。我在原文中提到的通用代碼需要通過每個單獨的SDK訪問。在將通用代碼提取到可插入每個SDK的單獨框架中 - 您是否對如何最好地實現這一目標有任何建議 - 您認爲我可能會用cocoapods過度複雜化嗎? – seanoshea

+0

@seanoshea我已經更新了答案,強調了要點。希望你會發現它有用:) – werediver

相關問題