2016-06-30 22 views
0

我有我自己的帶有內部豆莢的專用存儲庫。我曾經添加前綴到豆莢,但是現在我正在遷移到Swift我想擺脫它們。Cocoapods:通過使用兩個具有相同名稱但源不同的豆莢的Podfile衝突

但是,如果我擺脫了前綴(例如JAMNetworking到網絡),並且我在Podfile中指定了兩個來源,我得到了衝突,因爲Networking是來自主存儲庫的現有公共Pod。我知道一個可能的解決方案是在每個pod旁邊指定git存儲庫url,但是爲每個pod添加url是很煩人的,所以我正在尋找一個優雅的解決方案。我有一些想法,但它們似乎都不起作用:

A)向源添加名稱並指定每個吊艙的源名稱,例如,

source 'master', 'https://github.com/CocoaPods/Specs.git' 
source 'internal', 'https://myurl.git' 

pod 'samePodName', 'master' 
pod 'samePodName', 'internal' 

B)創建與所述源內指定了兩個定義:

def publicPods 
    source 'master', 'https://github.com/CocoaPods/Specs.git' 
    pod 'samePodName' 
end 

def internalPods 
    source 'internal', 'https://myurl.git' 
    pod 'samePodName' 
end 

target 'MyProject' do 
    publicPods 
    internalPods 
end 

可惜,這只是採取高清爲有效的一個而忽略另一個......所以在這種情況下,會安裝公共的。如果我在安裝後切換,然後卸載公共的一個,並安裝內部的一個。

C)創建多個目標。它返回一個關於具有相同名稱的多個目標的錯誤。

您是否認爲可以找到一個優雅的解決方案,而無需爲每個吊艙添加url或避免添加前綴?

回答

2

目前優雅的解決方案是保留您的前綴。考慮

一)它通常認爲,最好的做法是將具有相同名稱的其暴露斯威夫特模塊

B)斯威夫特模塊可能無法鏈接到另一個模塊重複的名字

您莢.. 。它提出瞭如何管理重複的pod名稱的問題。

Erica Sadun came to the same conclusion here。直到像其中提出反向DNS標識符來傳遞,

包名需要明確和具體的,是的,但他們應該避免將因爲當你有一個名爲SwiftString每鮑勃包重疊條款,簡和哈利也有一個名爲SwiftString的包,名稱衝突不可避免...

而且,在此之前,首選SadunSwiftString SwiftString並避免從一開始就問題。

堅持使用前綴,因爲這裏真正的問題是Swift在模塊級別之上缺少命名空間。到了這個時候,我們都會使用SPM,毫無疑問!

相關問題