Cocoapods, добавить зависимости для всех целей в общем виде

Приложение имеет более 20 целей.

Каждый раз, когда я добавляю цель, мне нужно обновлять свой подфайл:

Podfile

target 'SomeNewTarget' do
    runAllPods // Block that contains all "pod ...."
end

Мой вопрос:

Есть ли общий способ добавления зависимостей ко всем целям? Я бы хотел добавить одинаковые зависимости ко всем целям, кроме цели тестирования.

Полный подфайл:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

inhibit_all_warnings!

def runAllPods
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MyApp

  pod 'Swinject', '~> 2.1.0'
  pod 'SwinjectAutoregistration', '2.1.0'
  pod 'IHKeyboardAvoiding', '4.0'
  pod 'SnapKit', '3.2.0'
  pod 'Material', '~> 2.10.2'
  pod 'RxSwift', '~> 3.0'
  pod 'RxCocoa', '~> 3.0'
  pod 'PureLayout'
  pod 'Alamofire', '~> 4.5'

.... Больше зависимостей

end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == 'HydraAsync' || target.name == 'DKImagePickerController' || target.name == 'WhatsNew' || target.name == 'Closures' 
        target.build_configurations.each do |config|
          config.build_settings['SWIFT_VERSION'] = '4.0'
        end
      end
    end
  end



target 'Target1' do
  runAllPods
end

target 'Target2' do
  runAllPods
end

target 'Target3' do
  runAllPods
end

target 'Target4' do
  runAllPods
end
...
target 'Target 20' do
  runAllPods
end

... Больше целей

1 ответ

Решение

Делать что-то подобное, возможно, сработает.

def common_pods
    pod 'Pod1'
    pod 'Pod2'
    pod 'Pod3'
    …
end

project = Xcodeproj::Project.open "../Project.xcodeproj"
project.targets.each do |t|
    target t.name do
        common_pods
    end
end

Для получения более подробной информации об этом подходе, проверьте эту ветку о репозитории Cocoapod:

https://github.com/CocoaPods/CocoaPods/issues/5898

Другие вопросы по тегам