Моему приложению предоставляется один идентификатор bundleID для дистрибутива App Store. Приложение также имеет небольшой вариант для распределения предприятия, таким образом, с другим идентификатором bundleID. Автоматическая сборка использует следующую командную строку для установки идентификатора bundleID и выбора правильной подписи:
xcodebuild -project XYZ.xcodeproj -target XYZ -sdk "iphoneos" -configuration "Debug" BUNDLE_IDENTIFIER=<bundleID_1_or_2> CODE_SIGN_IDENTITY="<identify_1_or_2" build
Эта автоматическая сборка отлично работает, до недавнего времени я включил возможности iCloud. Теперь Xcode автоматически добавляет следующее в project.pbxproj:
TargetAttributes = {
QWERTY1234567890123456 = {
DevelopmentTeam = XYZ123456;
SystemCapabilities = {
com.apple.iCloud = {
enabled = 1;
};
};
};
};
Обратите внимание на добавление жестко закодированного "DevelopmentTeam = XYZ123456"; для двух сборок идентификатор DevelopmentTeam отличается. Как автоматизировать это? Более простым решением является создание script для изменения project.pbxproj перед вызовом xcodebuild, но я не являюсь поклонником этого решения. Следующее лучше всего создать новую "User Defined Setting", передав ее через командную строку, но я не мог понять, как связать пользовательскую настройку с этим идентификатором DevelopmentTeam, встроенным там в project.pbxproj.