使用CocoaPods防止“使用不同来源存在多个依赖关系”

时间:2015-05-20 10:13:44

标签: ios cocoapods

我在几个项目中使用自有和外部pod的组合。如果我正在开发或更新pod,我使用Podfile.local来避免对每个更改进行版本控制/标记。这里的问题,如果我必须更新Podfile以注释掉我在Podfile.local中使用的每个pod以避免错误。

当两个文件都有相同的pod以防止出现这种错误时,有没有办法告诉cocoapods应该考虑Podfile.local而不是Podfile:

  

分析依赖项[!]有多个依赖项   AnalyticsPodfile的不同来源:

     
      
  • Analytics(HEAD)
  •   
  • Google Analytics(来自~/Documents/analytics_ios
  •   

我的Podfile:

source 'https://github.com/CocoaPods/Specs.git'
source 'http://gitlab.whatever.com/podfolder/cocoapods_ios.git'
platform :ios, '7.0'

# Allows per-dev overrides
local_podfile = "Podfile.local"
eval(File.open(local_podfile).read) if File.exist? local_podfile

pod 'Advertising/Dfp', :head
pod 'RSSParser', :head
pod 'DTCoreText'
pod "AFNetworking", "~> 2.0"
pod 'OurKeyboard', :head
pod 'VideoPlayer/GooglePrerollForAdMob', :head
pod 'Analytics', :head
pod 'AppVersioning', :head

我的Podfile.local:

pod 'Analytics', :path => '~/Documents/analytics_ios'

3 个答案:

答案 0 :(得分:2)

由于CocoaPods 0.35并且从未得到官方支持,因此Podfile.local技巧不再可能 见https://github.com/CocoaPods/CocoaPods/issues/2860

答案 1 :(得分:0)

在配置中的现有应用程序中的观看扩展程序中安装pod时出现同样的问题: - Swift-3,Xcode-8.1和Pod-version 1.0.1 。< / p>

现有Podfile出现以上错误

platform :ios, ‘10.0’ source 'https://github.com/CocoaPods/Specs.git' 
use_frameworks!

target "DemoApp" do
        pod 'SwiftQRCode'
        pod 'Alamofire'


post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '3'
      end
    end  
end

target 'WatchExtension' do 
platform :watchos, '2.0'
pod 'Alamofire' 
pod 'SwiftyJSON' 
end
     

pod install

enter image description here

解决方案:

创建可在主应用程序包和观看操作系统扩展之间共享的共享定义: -

Updated podfile : source 'https://github.com/CocoaPods/Specs.git'   

#Create common defination to share the library between app and extension

def shared_pods    
pod'Alamofire'   
pod 'SwiftyJSON'  
end

target "DemoApp" do
        platform :ios, '10.0'
        use_frameworks!
        shared_pods

   post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_VERSION'] = '3'
        end
      end  
 end

target 'WatchExtension' do 
     platform :watchos, '2.0'
     use_frameworks!
     shared_pods
end

因此,podfile中的更改解决了上述“使用不同来源的多个依赖项...... ”的问题。

需要更新图书馆搜索路径: -

enter image description here

答案 2 :(得分:0)

我的问题是我有两个相同的包裹。一个已被弃用,另一个是我刚刚安装的,但我没有卸载已弃用的软件包。因此,新程序包向我的Podfile添加了一个依赖关系,而弃用的程序包则添加了相同的依赖关系,但来自不同的来源。我将卸载已弃用的软件包,并且错误消失了。