我在應用程序中使用CocoaPods,其中工作空間由主應用程序項目和一些靜態庫作爲子項目組成,每個靜態庫都有自己的依賴關係。靜態庫在編譯時鏈接到主項目中,主要作爲封裝和組織代碼的手段存在。使用cocoapods管理靜態庫中的依賴關係
CocoaPods將依賴項鍊接到子項目的靜態庫中時出現問題。如果這兩個或多個靜態庫具有相同的依賴關係,則它們都不能鏈接到主項目中,因爲這樣做會導致重複的符號。
我現在有的解決方法是在每個子項目中創建一個「虛擬」目標,並將其設置爲pod文件中的鏈接目標。真正的目標使用由CocoaPods生成的xcconfig文件,沒有任何依賴關聯鏈接。
儘管這確實有效,並且id是我能找到的最簡單的解決方案,但它仍然帶有額外的不必要的負擔,針對每個項目,如:
xcodeproj 'MyApp/MyApp.xcodeproj'
target :'MyApp' do
xcodeproj 'MyApp/MyApp.xcodeproj'
pod 'MBProgressHUD', '0.9'
link_with 'PodDummy'
end
另一個缺點這種方法是將所有的依賴仍然需要在主項目無論如何指定,使它們與最終的可執行文件鏈接。
所以我的問題是:如何使用的CocoaPods靜態庫中的項目,而不依賴鏈接到二進制?
或者更好的是:我可以只在靜態庫子項目中指定依賴項,並讓CocoaPods找出需要在主項目中鏈接哪些內容,解決過程中的重複項?
我在考慮只在pod文件中包含主項目,並讓子項目手動引用標題的「Pods」目錄。
過去似乎已經圍繞這個問題進行了一些討論,但是我看不出它是什麼,如果有的話。相關的討論是:
- https://github.com/CocoaPods/CocoaPods/issues/1335
- https://github.com/CocoaPods/CocoaPods/issues/840
- iOS Static Library + CocoaPods and the duplicate symbols error
- Kiwi and CocoaPods with a static shared library
謝謝你的回答。我沒有開發豆莢,只是試圖使用一個項目使用多個子項目鏈接到一個單一的可執行文件。子項目有其自己的依賴關係 - 其中一些對每個項目都是唯一的,另一些則用於多個子項目。問題是使用cocoapods來管理這些依賴關係,同時也避免了當依賴鏈接到可執行文件時出現的重複符號。 – 2015-04-21 18:23:17