如何在同一podspec文件中从subspec'B'声明对subspec'A'的依赖?

时间:2017-01-05 19:15:02

标签: cocoapods podspec cocoapods-1.1.1

我试图找到一种方法来声明从子模式'B'到podspec中的subpec'A'的依赖:'mypodspecfile.podspec',如下所示:

Pod::Spec.new do |s|
  s.name         = "MyLib-SDK"
  s.version      = "1.0"
  s.summary      = "My Library"
  s.homepage     = "http://myhomepage.com"

  s.ios.deployment_target = "8.0"
  s.ios.frameworks = "Foundation", "UIKit", "SystemConfiguration", "Security", "CoreTelephony", "WebKit"

  s.source       = { :git => "https://github.com/myhome/ios-project.git", :tag => "1.0" }

  s.subspec 'MyLibrary-A' do |libOne|
    libOne.source_files  = "Headers", "Headers/**/*.h"
    libOne.exclude_files = "Headers/Exclude"
    libOne.resources = "SharedAssets/*"

    libOne.libraries = "z","sqlite3" #Zlib for gzip, sqlite3 for event store
    libOne.vendored_library = "libMyLibrary_A.a"
  end

  s.subspec 'MyLibrary-B' do |libTwo|
    libTwo.source_files  = "Headers", "Headers/**/*.h"
    libTwo.exclude_files = "Headers/Exclude"
    libTwo.resources = "SharedAssets/*"
    libTwo.dependency 'MyLibrary-A'  <-- doesn't seem to be working here!!

    libTwo.libraries = "sqlite3" # sqlite3 for db
    libTwo.vendored_library = "libMyLibrary_B.a"
  end

 end

执行时:

$pod spec lint mypodspecfile.podspec --verbose

-ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for MyLibrary-A depended upon by MyLibrary-B

非常感谢任何帮助。谢谢你!

1 个答案:

答案 0 :(得分:0)

您应始终编写pod依赖项的完整路径。该错误表明可可豆荚无法在pod repo中找到 MyLibrary-A .podspec文件。要解决此问题,请指定完整路径'MyLib-SDK/MyLibrary-A'

所以你的podspec文件应如下所示:

Pod::Spec.new do |s|
  s.name         = "MyLib-SDK"
  s.version      = "1.0"
  s.summary      = "My Library"
  s.homepage     = "http://myhomepage.com"

  s.ios.deployment_target = "8.0"
  s.ios.frameworks = "Foundation", "UIKit", "SystemConfiguration", "Security", "CoreTelephony", "WebKit"

  s.source = { :git => "https://github.com/myhome/ios-project.git", :tag => "#{s.version}" }

  s.subspec 'MyLibrary-A' do |libOne|
    libOne.source_files  = "Headers", "Headers/**/*.h"
    libOne.exclude_files = "Headers/Exclude"
    libOne.resources = "SharedAssets/*"

    libOne.libraries = "z","sqlite3" #Zlib for gzip, sqlite3 for event store
    libOne.vendored_library = "libMyLibrary_A.a"
  end

  s.subspec 'MyLibrary-B' do |libTwo|
    libTwo.source_files  = "Headers", "Headers/**/*.h"
    libTwo.exclude_files = "Headers/Exclude"
    libTwo.resources = "SharedAssets/*"
    libTwo.dependency 'MyLib-SDK/MyLibrary-A'  # here is the change

    libTwo.libraries = "sqlite3" # sqlite3 for db
    libTwo.vendored_library = "libMyLibrary_B.a"
  end

 end