【问题标题】:CocoaPod with static library dependencies具有静态库依赖项的 CocoaPod
【发布时间】:2017-03-09 09:25:48
【问题描述】:

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

我当前包含在我的 pod 中的 pod 如下

  • FacebookCore
  • Facebook登录
  • 面料
  • 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,它可以轻松使用所有这些服务,并能够在需要时添加更多服务。

【问题讨论】:

    标签: swift dependencies cocoapods


    【解决方案1】:

    我希望您仍在寻找解决方案。
    这就是我所做的:
    我将 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
    

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 2011-06-06
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2015-08-18
      • 2020-11-02
      • 1970-01-01
      相关资源
      最近更新 更多