Как поделиться некоторыми контейнерами в двух целях с помощью podfile
xcodeproj 'Demo.xcodeproj'
platform :ios, "6.0"
target "Demo" do
pod 'Demo-A', '3.1.1'
pod 'Demo-B', '1.0'
pod 'Demo-C', '~> 1.9.0'
pod 'Demo-D', '~> 1.1'
pod 'AA', '0.0.1'
pod 'BB', '0.0.1'
pod 'CC', '0.0.1'
pod 'DD', '0.0.1'
pod 'EE', '0.0.1'
pod 'FF', '0.0.1'
pod 'GG', '0.0.1'
end
target "DemoTests" do
pod 'DemoTests-X', '3.1.1'
pod 'DemoTests-Y', '0.4.0'
pod 'DemoTests-Z', '4.1.1'
pod 'AA', '0.0.1'
pod 'BB', '0.0.1'
pod 'CC', '0.0.1'
pod 'DD', '0.0.1'
pod 'EE', '0.0.1'
pod 'FF', '0.0.1'
pod 'GG', '0.0.1'
end
target "DemoWidget" do
pod 'DemoWidget-1', '3.1.1'
pod 'DemoWidget-2', '0.4.0'
pod 'DemoWidget-3', '4.1.1'
end
это мой подкайл. как вы можете видеть.
pod 'AA', '0.0.1'
pod 'BB', '0.0.1'
pod 'CC', '0.0.1'
pod 'DD', '0.0.1'
pod 'EE', '0.0.1'
pod 'FF', '0.0.1'
pod 'GG', '0.0.1'
этот код появляется дважды. DemoTests - тестовая цель для демонстрационного целевого объекта. В то время как я пишу тестовый файл и улучшаю исходный файл в Demo target.it, будет зависеть некоторый файл в контейнерах, которые в целевом демо, но не в целевом приложении DemoTests. поэтому я пишу этот код подфайла дважды для зависимости.
но, это уродливо! мои коллеги и я должны поддерживать два набора такого кода. И мой подфайл будет раздутым!
Я хочу сохранить этот код один раз! как это сделать ~
Я люблю cocoapods! я верю, что это решит мою проблему ~
ожидая ответа u ~~~~
Ответы
Ответ 1
Вы можете использовать его так, чтобы уменьшить длину podfile, а также сможете поддерживать код один раз!!!
xcodeproj 'Demo.xcodeproj'
platform :ios, "6.0"
def common_pods_for_target
pod 'AA', '0.0.1'
pod 'BB', '0.0.1'
pod 'CC', '0.0.1'
pod 'DD', '0.0.1'
pod 'EE', '0.0.1'
pod 'FF', '0.0.1'
pod 'GG', '0.0.1'
end
target "Demo" do
pod 'Demo-A', '3.1.1'
pod 'Demo-B', '1.0'
pod 'Demo-C', '~> 1.9.0'
pod 'Demo-D', '~> 1.1'
common_pods_for_target
end
target "DemoTests" do
pod 'DemoTests-X', '3.1.1'
pod 'DemoTests-Y', '0.4.0'
pod 'DemoTests-Z', '4.1.1'
common_pods_for_target
end
target "DemoWidget" do
pod 'DemoWidget-1', '3.1.1'
pod 'DemoWidget-2', '0.4.0'
pod 'DemoWidget-3', '4.1.1'
end
Просто определите все свои общие стручки в переменной и используйте ее в целевых целях.
Ответ 2
CocoaPods теперь рекомендует использовать abstract_target
, если вы хотите, чтобы несколько целей делили одни и те же объекты. Обратите внимание, что фактические цели вложены в новую абстрактную.
# There are no targets called "Shows" in any Xcode projects
abstract_target 'Shows' do
pod 'ShowsKit'
pod 'Fabric'
# Has its own copy of ShowsKit + ShowWebAuth
target 'ShowsiOS' do
pod 'ShowWebAuth'
end
# Has its own copy of ShowsKit + ShowTVAuth
target 'ShowsTV' do
pod 'ShowTVAuth'
end
end