Создание подспецификации с несколькими целями, которые имеют локальные зависимости

  • У меня есть podspec для MyLib.
  • MyLib.xcworkspace имеет две цели: цель MyLib и цель MySubLib.
  • MyLib зависит от MySubLib.
  • И MyLib, и MySubLib должны быть importспособны работать в быстром модуле с использованием MyLib Cocoapod.

Иллюстрация:

MyLib.xcрабочая область

  • MyLib target <---depends on---MySubLib
    • MyLib pods dependencies
  • Цель MySubLib

Как мы этого добиваемся?

У меня есть следующий podspec, но при линтинге MySubLib не найден там, где он imported в MyLib.

Pod::Spec.new do |s|
  s.name             = "MyLib"
  s.version          = "0.1"
  s.summary          = ""

  s.description      = <<-DESC

                       DESC

  s.homepage         = "https://github.com/me/MyLib"
  s.license          = 'MIT'
  s.author           = { "me" => "[email protected]" }
  s.source           = { :git => "https://github.com/me/MyLib.git", :tag => s.version.to_s }

  s.platform     = :ios, '8.0'
  s.requires_arc = true

  s.dependency 'Alamofire'

  s.source_files = 'MyLib/**/*.swift', 'MySubLib/**/*.swift'
  s.resource_bundles = {
  }

end

person Awesome-o    schedule 05.01.2017    source источник


Ответы (1)


Вы можете использовать subspec. Я использую его в своей структуре L10n-swift.

Библиотека может указывать зависимость либо от другой библиотеки, либо от другой библиотеки, либо от самой себя.

Возвращаясь к вашей проблеме

Pod::Spec.new do |s|
    s.name             = "MyLib"
    s.version          = "0.1"
    s.summary          = ""

    s.description      = <<-DESC

    DESC

    s.homepage         = "https://github.com/me/MyLib"
    s.license          = 'MIT'
    s.author           = { "me" => "[email protected]" }
    s.source           = { :git => "https://github.com/me/MyLib.git", :tag => s.version.to_s }

    s.platform     = :ios, '8.0'
    s.requires_arc = true

    s.subspec 'MySubLib' do |mySubLib|
        mySubLib.dependency 'Alamofire'
        mySubLib.source_files = 'MySubLib/**/*.swift'
    end

    s.subspec 'MyLib' do |myLib|
        myLib.dependency 'MyLib/MySubLib'
        myLib.source_files = 'MyLib/**/*.swift'
    end

    s.resource_bundles = { }
end

Вы также можете определить default_subspec

Массив имен подспецификаций, которые следует использовать в качестве предпочтительной зависимости. Если спецификация не указана, в качестве зависимостей требуются все ее подспецификации.

person Adrian Bobrowski    schedule 16.08.2017
comment
Не похоже, чтобы подспецификация MySubLib где-либо использовалась как зависимость. Кроме того, зачем MyLib нужна собственная подспецификация? - person Awesome-o; 22.08.2017
comment
@Awesome-о, извините, я ошибся. Конечно, MyLib должен зависеть не от себя, а от MySubLib. я обновил свой ответ - person Adrian Bobrowski; 22.08.2017
comment
В настоящее время я не работаю над тем, для чего это было актуально, но когда я вернусь к этому в ближайшем будущем, я проверю это и отмечу как ответ, если это сработает ???? - person Awesome-o; 23.08.2017