xcodebuild другой профиль обеспечения для целевой зависимости
Я пытаюсь собрать свое приложение с помощью xcodebuild:
xcodebuild -workspace "RG.xcworkspace" -scheme "Production" -configuration "Release" build CONFIGURATION_BUILD_DIR="${TEMP_DIR}" PROVISIONING_PROFILE="1234-5678-9098-7654-3210"
Моя схема имеет две цели. Одна цель - приложение, другая - расширение приложения (я создал расширение для Safari). Расширение приложения является целевой зависимостью. Каждая цель требует отдельного профиля обеспечения. Я не знаю, как указать PROVISIONING_PROFILE для зависимости. Я получаю эту ошибку, как и ожидалось:
CodeSign error: code signing is required for product type 'App Extension' in SDK 'iOS 8.1'
Stackru и справочная страница для xcodebuild, похоже, ничего не придумали. Кто-нибудь знает, как создать проект с xcodebuild, который опирается на два профиля обеспечения?
4 ответа
Я провел слишком много времени, работая над этим сегодня. Я был на пути в кровать, когда ответ ударил меня:
В настройках сборки каждой из ваших целей вы должны установить $VARIABLE
для имени профиля. Для этого выберите "Другие" в нижней части списка профилей. При этом откроется текстовое поле - выберите другое $VARIABLE
для каждой цели - например, я выбрал $APP_PROFILE
для цели приложения контейнера и $EXTENSION_PROFILE
для моей цели расширения сегодня
Это приведет к чему-то вроде следующего:
Наконец, при построении с xcodebuild
укажите UUID профиля, как вы сделали с PROVISIONING_PROFILE
:
xcodebuild ... APP_PROFILE="85b6f019-d5e5-43a7-9e8f-e3aaed64a7e4" EXTENSION_PROFILE="e50cf605-ab63-40ad-8329-2758359ea748"
Построение изнутри XCode, кажется, не затронуто - насколько я могу судить, XCode выбирает профили по умолчанию (как будто в "автоматическом" режиме)
Теоретически это будет поддерживать несколько расширений тоже.
У меня работает с XCode 6.3:)
Решение без переменной
Есть вариант, -exportSigningIdentity
это может помочь вам, поскольку профили обеспечения приложения и расширения / виджета могут отличаться, но идентификаторы подписи приложения и расширения должны быть одинаковыми.
Например, вы увидите, что
- TargetApp -> Настройки сборки -> "Идентификация подписи кода (id)" (выпуск)
- TargetExtension -> Настройки сборки -> "Идентификация подписи кода (id)" (выпуск)
по сути, одна и та же строка, скажем, это тождество "Идентификация подписи кода (id)". Таким образом, чтобы создать и экспортировать архив, то, что вы можете запустить, это просто,
очищающий
xcodebuild clean -workspace HelloWorld.xcworkspace -scheme HelloWorld
Строительство
xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld archive -archivePath ~/output/HelloWorld.xcarchive
Экспорт
xcodebuild -exportArchive -exportFormat ipa -archivePath ~/output/HelloWorld.xcarchive -exportPath "HelloWorld.ipa" -exportSigningIdentity "Code Signing Identity (id)"
Ссылка: документация по xcodebuild
Месяцы спустя... Нашли решение, которое не включает значения настроек в XCode: Внутри sigh
Существует сценарий, который может подать в отставку файл IPA с заданными профилями. Следующие работы для меня:
bash resign.sh Experiments-AdHocProd.ipa "iPhone Distribution: Company Pty Ltd" output.ipa -p com.company.experiments.AudioPlugin=Experiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision -p com.company.experiments=Experiments-AdHocProd.mobileprovision --verbose
где:
Experiments-AdHocProd.ipa
это существующий ipacom.company.experiments.AudioPlugin
это идентификатор пакета расширенияExperiments-AdHocProd_com.company.experiments.AudioPlugin.mobileprovision
это расширение профиляcom.company.experiments
основной идентификатор пакета приложенияExperiments-AdHocProd.mobileprovision
основной профиль приложения
Идентификатор пакета каждого профиля должен совпадать с идентификатором приложения, с которым он будет подписан.
Я обнаружил, что важно отметить, что если идентификатор пакета имеет подстановочный знак (в моем случае Experiments-AdHocProd.mobileprovision
делает) тогда профили с явными идентификаторами должны быть переданы в -p
первый.
В качестве альтернативы, вы можете использовать sigh
выполнить отставку. К несчастью, sigh --help
ничего не говорит об отставке бинарных файлов с расширениями, однако sigh resign --help
делает.
В Swift структура файлов Pod будет упакована отдельно. Следующие шаги решили проблему.
1. Select pods
2. Targets
3. General
4. Edit bundle id
5. Build Settings
6. Code Signing
7. Provisioning profile -> select the valid profile
8. Code Signing Identity -> Select the respective identity from
profile.
Повторите то же самое для всех целей.
Я могу генерировать сборку.