CocoaPod具有静态库依赖项

时间:2017-03-09 09:25:49

标签: swift dependencies cocoapods

我目前正在尝试首次创建一个包含多个依赖项的pod。

我目前在我的吊舱中包含的吊舱如下

  • FacebookCore
  • FacebookLogin
  • 织物
  • TwitterKit
  • 谷歌/登入
  • LinkedinSwift

我的podspec文件看起来像这样

Pod::Spec.new do |s|

  s.platform     = :ios
  s.ios.deployment_target = '8.0'
  s.name         = "Socializin"
  s.version      = "0.0.1"
  s.summary      = "A short description of Socializin."
  s.requires_arc = true

  s.author       = {"MyName" => "MyMail"}
  s.homepage     = "http://EXAMPLE/Socializin"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.source       = { :git => "", :tag => "#{s.version}"}

  s.framework    = "UIKit"
  s.dependency 'FacebookCore', '~> 0.2.0'
  s.dependency 'FacebookLogin', '~> 0.2.0'
  s.dependency 'FacebookShare', '~> 0.2.0'
  s.dependency 'Fabric', '~> 1.6.11'
  s.dependency 'TwitterKit', '~> 2.8.1'
  s.dependency 'Google/SignIn', '~> 3.0.3'
  s.dependency 'LinkedinSwift', '~> 1.7.4'

  s.source_files = "Socializin/**/*.{swift}"
  #s.resources = "Socializin/**/*.{png,jpeg,jpg,storyboard,xib}"
end

但依赖关系会给我以下错误

[!] The 'Pods-socializinTest' target has transitive dependencies that include static binaries: (/Users/x/projects/x/Examples/socializinTest/Pods/Fabric/iOS/Fabric.framework, /Users/x/projects/x/Examples/socializinTest/Pods/Google/Frameworks/GGLCore.framework, and /Users/x/projects/x/Examples/socializinTest/Pods/Google/Frameworks/GGLSignIn.framework)

无论如何确保它确实有效吗?我想做的就是创建一个pod,它可以让所有这些服务轻松使用,并且可以在需要时添加更多服务。

1 个答案:

答案 0 :(得分:0)

我希望您仍在寻找解决方案。
这是我做的:
我将Google SignIn框架置于/ Dependency / GoogleDependency下
我把TwitterKit,TwitterCore和Fabric框架放在/ Dependency / TwitterDependency /

Pod::Spec.new do |s|
  s.platform     = :ios
  s.ios.deployment_target = '9.0'
  s.name         = "Socializin"
  s.version      = "0.0.1"
  s.summary      = "A short description of Socializin."
  s.requires_arc = true

  s.author       = {"MyName" => "MyMail"}
  s.homepage     = "http://EXAMPLE/Socializin"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.source       = { :git => "", :tag => "#{s.version}"}

  s.framework    = "UIKit"
  s.dependency 'FacebookCore', '~> 0.2.0'
  s.dependency 'FacebookLogin', '~> 0.2.0'
  s.dependency 'FacebookShare', '~> 0.2.0'
  s.dependency 'LinkedinSwift', '~> 1.7.4'

  s.source_files = "Socializin/**/*.{swift}"
  #s.resources = "Socializin/**/*.{png,jpeg,jpg,storyboard,xib}"

  #----------------------------Sub Modules-----------------#
  s.subspec 'GoogleAuthentication' do |ss|
    ss.ios.deployment_target = '9.0'
    ss.source_files = 'Socializin/Dependency/GoogleDependency/**/*.{swift}'
    ss.resources = ['Socializin/Dependency/GoogleDependency/**/*.{xib,xcdatamodeld,bundle}']
    ss.vendored_frameworks = ['Socializin/Dependency/GoogleDependency/**/*.{framework}']
    ss.preserve_paths = ['Socializin/Dependency/GoogleDependency/**/*.{framework}']
    frameworkPaths = ''
    Dir.glob('Socializin/Dependency/GoogleDependency/**/*.{framework}') do |filename|
      filePath = Pathname.new(filename)
      newFilename = filePath.dirname
      if frameworkPaths != "" 
        frameworkPaths = "#{frameworkPaths} \"$(PODS_ROOT)/#{newFilename}\""
      else
        frameworkPaths = "\"$(PODS_ROOT)/#{newFilename}\""
      end
    end
    ss.xcconfig = { 
      'FRAMEWORK_SEARCH_PATHS' => frameworkPaths,
      'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Socializin/Dependency/GoogleDependency"', 
    }
    #Authentication
    # ss.dependency 'GoogleSignIn'
    ss.dependency 'GoogleToolboxForMac/NSDictionary+URLArguments'
    ss.dependency 'GoogleToolboxForMac/NSData+zlib'
  end

  s.subspec 'TwitterAuthentication' do |ss|
    ss.ios.deployment_target = '9.0'
    ss.source_files = 'Socializin/Dependency/TwitterDependency/**/*.{swift}'
    ss.resources = ['Socializin/Dependency/TwitterDependency/TwitterKit/iOS/TwitterKit.framework/*.{xib,xcdatamodeld,bundle}']
    ss.vendored_frameworks = ['Socializin/Dependency/TwitterDependency/**/*.{framework}']
    ss.preserve_paths = ['Socializin/Dependency/TwitterDependency/**/*.{framework}']
    frameworkPaths = ''
    Dir.glob('Socializin/Dependency/TwitterDependency/**/*.{framework}') do |filename|
      filePath = Pathname.new(filename)
      newFilename = filePath.dirname
      if frameworkPaths != "" 
        frameworkPaths = "#{frameworkPaths} \"$(PODS_ROOT)/#{newFilename}\""
      else
        frameworkPaths = "\"$(PODS_ROOT)/#{newFilename}\""
      end
    end
    ss.xcconfig = { 
      'FRAMEWORK_SEARCH_PATHS' => frameworkPaths,
      'HEADER_SEARCH_PATHS' => '"$(PODS_ROOT)/Socializin/Dependency/TwitterDependency"',
    }
    #Authentication
    # ss.dependency 'Fabric'
    # ss.dependency 'TwitterKit'
    # ss.dependency 'TwitterCore'
  end
end