Ios Cocoapods:Podfile因两个名称相同但源不同的Pod而发生冲突

Ios Cocoapods:Podfile因两个名称相同但源不同的Pod而发生冲突,ios,cocoapods,podspec,podfile,Ios,Cocoapods,Podspec,Podfile,我有自己的专用规范存储库和内部pod。我过去常常在pod中添加前缀,但是现在我要迁移到Swift,我想去掉它们 但是,如果我去掉前缀(例如,JAMNetworking to Networking),并在Podfile中指定两个源,那么就会出现冲突,因为Networking是主存储库中现有的公共pod。我知道一个可能的解决方案是在每个pod旁边指定git存储库url,但是为每个pod添加url对我来说很烦人,所以我正在寻找一个优雅的解决方案。我有一些想法,但似乎都不管用: A)为源添加一个名称,并

我有自己的专用规范存储库和内部pod。我过去常常在pod中添加前缀,但是现在我要迁移到Swift,我想去掉它们

但是,如果我去掉前缀(例如,JAMNetworking to Networking),并在Podfile中指定两个源,那么就会出现冲突,因为Networking是主存储库中现有的公共pod。我知道一个可能的解决方案是在每个pod旁边指定git存储库url,但是为每个pod添加url对我来说很烦人,所以我正在寻找一个优雅的解决方案。我有一些想法,但似乎都不管用:

A)为源添加一个名称,并为每个pod指定源名称,例如

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
不幸的是,这只将其中一个def视为有效,而忽略另一个def…因此在这种情况下,它将安装公共def。如果我在安装后切换,则卸载公共的,然后安装内部的

C)创建多个目标。它返回了一个关于多个同名目标的错误


你认为不为每个pod添加url或避免添加前缀就可以找到一个优雅的解决方案吗?

目前最优雅的解决方案是保留前缀。考虑

a) 人们普遍认为,最佳实践是将pod命名为与其公开的Swift模块相同的名称

b) Swift模块不得链接到具有重复名称的其他模块

。。。这使得如何管理重复的pod名称的问题变得毫无意义

埃里卡·萨顿。直到其中提出的反向DNS标识符实现

包名需要清晰具体,是的,但它们应该避免术语重叠,因为当您有一个名为SwiftString的包,而每个Bob、Jane和Harry也有一个名为SwiftString的包时,名称冲突是不可避免的

在那之前,我们更喜欢SadunSwiftString而不是swifftstring,并从一开始就避免这个问题


请坚持使用前缀,因为真正的问题是Swift在模块级别上缺少名称空间。到解决这个问题时,毫无疑问,我们都将使用SPM

目前最好的解决办法是保留前缀。考虑

a) 人们普遍认为,最佳实践是将pod命名为与其公开的Swift模块相同的名称

b) Swift模块不得链接到具有重复名称的其他模块

。。。这使得如何管理重复的pod名称的问题变得毫无意义

埃里卡·萨顿。直到其中提出的反向DNS标识符实现

包名需要清晰具体,是的,但它们应该避免术语重叠,因为当您有一个名为SwiftString的包,而每个Bob、Jane和Harry也有一个名为SwiftString的包时,名称冲突是不可避免的

在那之前,我们更喜欢SadunSwiftString而不是swifftstring,并从一开始就避免这个问题

请坚持使用前缀,因为真正的问题是Swift在模块级别上缺少名称空间。到解决这个问题时,毫无疑问,我们都将使用SPM