2016-12-02 4 views
1

В Xcode 7 я строил проект через командную строку для нескольких профилей предоставления, используя следующие команды. У меня есть несколько профилей предоставления и множественный сертификат подписи кода, связанный с этими профилями, поэтому мне нужно подписать файл IPA с соответствующим профилем обеспечения.xcode 8 xcodebuild ручной подписание кода из командной строки для нескольких профилей предоставления данных

PROVISION_PROFILE="My Provision profile name" 

xcodebuild -workspace ../ProjectName.xcworkspace -scheme "${PRODUCT_NAME}" -sdk iphoneos -configuration "${CONFIGURATION}" archive -archivePath "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.xcarchive" 

xcodebuild -exportArchive -archivePath "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.xcarchive" -exportPath "${BINDIR}/${PACKAGE_NAME}-${CURVERSION}.ipa" -exportProvisioningProfile "${PROVISION_PROFILE}" 

Теперь эти команды не работают для Xcode 8. Я снимите автоматически управлять после подписания, что он дает ошибку ниже

«someProjectName» требует профиля обеспечения. Выберите профиль обеспечения для конфигурации сборки «Отладка» в редакторе проекта. Подписание кода для типа продукта «Приложение» в SDK «iOS 10.1» В этом мне поможет кто-нибудь.

+1

Вы можете добавить скриншот того, что в разделе «Подписание» выглядит в целевых настройках вашего проекта в Xcode под общ-> Подписание? Похоже, что у вашей конфигурации Debug нет профиля инициализации, заданного в файле проекта. –

+1

Правильно, я не добавил профиль профиля в этом разделе, потому что я хочу построить это из командной строки. Поскольку у меня есть несколько профилей предоставления для разных конфигураций, поэтому мне нужно передать их из командной строки. Вы знаете, как я могу передать их из командной строки? – Gaurav

+0

@kgaleman Нужно ли передавать эту информацию из редактора проекта? – Gaurav

ответ

0

Вы указываете только профиль обеспечения в своей команде -exportArchive. В команде -workspace Xcodebuild достигает заданного вами -scheme, который просматривает файл project.pbxproj и захватывает профили подготовки, которые вы разместили в редакторе проекта, для конфигураций, заданных построенной схемой.

Если вы откроете файл project.pbxproj в текстовом редакторе, вы увидите, что в конфигурации Debug нет профиля профилирования, поэтому Xcodebuild выбрасывает эту ошибку. Чтобы исправить это, добавьте профили подготовки в редакторе проекта (или в project.pbxproj) для конфигураций, создаваемых вашей схемой.

Редактировать: Теперь, когда я лучше понимаю требования, редактируя свой ответ другим вариантом. Вы также можете сделать это вручную указать профиль обеспечения в вашем шаге сборки:

xcodebuild -workspace ../ProjectName.xcworkspace -scheme "${PRODUCT_NAME}" -sdk iphoneos -configuration "${CONFIGURATION}" archive -archivePath "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.xcarchive" PROVISIONING_PROFILE="${PROVISION_PROFILE}" 
+0

Добавление профиля профиля в редакторе проекта, устраняющего проблему выброса этой ошибки. У меня разные настройки профиля для разных клиентов, поэтому я хочу заменить этот профиль обеспечения на следующем шаге. Is -exportProvisioningProfile работает в следующем шаге и заменяет профиль по умолчанию? – Gaurav

+0

Спасибо за разъяснение, @Guarav! Я отредактировал свой ответ с другим вариантом для вас. Дай мне знать, если это работает. –

+0

перед архивированием есть еще один шаг, который я еще не добавил в свой вопрос xcodebuild -workspace project.xcworkspace -configuration Debug -scheme Release-something clean build -destination generic/platform = iOS Если я добавлю PROVISIONING_PROFILE = "$ {PROVISION_PROFILE } "в этой команде происходит сбой архива. , в какое время именно xcode нуждается в этих условиях? во время сборки или время архивирования или время подписания? – Gaurav