Как добавить пользовательские конфигурации проектов в Xcode при использовании CocoaPods?
У меня есть проекты iOS/OS X Xcode, где я использую CocoaPods, и я не могу понять, как добавить свои собственные конфигурации проектов (в дополнение к Debug и Release) без полного взрыва сборки.
В проекте у меня есть ряд целей для приложений на обеих платформах и расширениях приложений. Разумеется, в рабочем пространстве Xcode также есть проект Pods.
Поскольку проект создает цели для iOS и Mac, я использую "цели" CocoaPods для группировки своих модулей. Мой подфайл выглядит примерно так:
source 'https://github.com/CocoaPods/Specs.git'
target :iOS do
platform :ios, '7.1'
link_with 'iOS', 'NozbeToday', 'NozbeShare', 'NozbeWatch'
# pods...
end
target :Mac do
platform :osx, '10.9'
link_with 'Mac'
# pods...
end
Теперь, когда у меня есть проблема. До сих пор у меня были только настройки "Debug" и "Release" по умолчанию в моем проекте. Я хотел изменить их и добавить новые для различной конфигурации профиля/пакета ID.
... и я застрял. Я не могу понять, как это сделать.
Первым признаком проблемы было предупреждение pod install
, израсходованное для каждой комбинации цели/конфигурации:
[!] CocoaPods не установили базовую конфигурацию вашего проекта потому что у вашего проекта уже есть собственный набор настроек. Для того чтобы CocoaPods интеграция для работы вообще, пожалуйста, либо установите базу конфигурации цели NozbeToday
до Pods/Target Support
Files/Pods-iOS/Pods-iOS.dev debug.xcconfig
или включить Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig
в вашей конфигурации сборки.
Я не мог понять, что это значит и как это исправить. В любом случае проект не будет построен - в лучшем случае я бы получил ошибку компоновщика, заявив, что не может найти Pods-something.a
...
Ответы
Ответ 1
Хорошо, поэтому на полпути, написав этот вопрос, я сам это понял (yay rubber ducking). Здесь решение для следующих поколений:
По существу, вам нужно добавить явную зависимость от цели Pods к вашей схеме приложения.
Как вы это делаете, выполните следующие действия: отредактируйте схему своего приложения, перейдите в раздел "Сборка" и добавьте целевой объект "Под" выше. Вы должны увидеть что-то вроде этого:
![enter image description here]()
И он будет работать.
Что касается предупреждений CocoaPods на pod install
, вам нужно использовать файлы xcconfig
, созданные CP для каждой из ваших конфигураций Xcode. Как вы это делаете:
- найдите файлы .xcconfig в
Pods/Target Support Files
- перетащите их в группу "Pods" в вашем проекте Xcode (добавьте только ссылку). Не копируйте цель или добавьте в сборку)
- Нажмите на проект в навигаторе проекта и выберите сам проект (а не одну из целей). Перейдите в раздел "Информация", а в разделе "Конфигурации" установите правильные .xcconfigs для каждой конфигурации и цели в столбце "На основе конфигурации".
Вам также понадобится что-то подобное в вашем подфайле, чтобы CocoaPods знали, какие из ваших конфигураций Xcode "отлаживаются" (неоптимизированы), которые являются "выпуском":
xcodeproj '1Nozbe', {
'iOS 1 Dev Debug' => :debug,
'iOS 2 Dev AdHoc' => :release,
'iOS 3 Release Debug' => :debug,
'iOS 4 Release AdHoc' => :release,
'iOS 5 Release AppStore' => :release,
}
Не точно связано с CocoaPods, но если у вас есть другие (подпроекты) зависимости, отличные от CP, вам также нужно сделать две вещи:
- добавить явные зависимости от целевой подпроекта (например, на скриншоте выше)
- переименовать/добавить конфигурации в ваш подпроект, чтобы они были такими же, как ваш основной проект. (В противном случае Xcode просто не знает, какую конфигурацию использовать с вашим подпроектом)
Ответ 2
Добавьте эту строку в свой файл конфигурации, так же как импортируйте файл заголовка:
#include "Pods/Target Support Files/Pods/Pods.debug.xcconfig"
ПРИМЕЧАНИЕ: #include
, а не #import