У меня есть проект, который состоит из разных целей для разных сред сборки.Я получаю файл IPA на Дженкинса с xcodebuild
.Я хочу определить один файл exportOptionsPlist и назначить другую переменную для разных целей.Например, для method
цель Dev должна иметь development
, а цель Prod должна иметь app-store
.Для этого я определяю настройки User-Defined
в настройках сборки.
PS: у каждой цели есть только параметры отладки и выпуска, а у каждой цели есть IPA_EXPORT_METHOD.
Моя проблема в том, что я получаю ошибку ниже, когда пытаюсь получить IPA ( Чтение IPA_EXPORT_METHOD из файла ExportOptionsPlist ):
Ошибка домена = IDEFoundationErrorDomain Code = 1 «ошибка exportOptionsPlist для ключа« метод »: ожидалось одно из {app-store, ad-hoc, enterprise, development, validation}}, но найдено $ {IPA_EXPORT_METHOD}" UserInfo = {NSLocalizedDescription = exportOptionsPlist ошибка для ключевого «метода»: ожидалось одно из {app-store, ad-hoc, enterprise, development, validation}, но найдено $ {IPA_EXPORT_METHOD}}
Как получитьархив:
$ xcodebuild -workspace CLI.xcworkspace -scheme CLI -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/CLI.xcarchive
Как я могу получить IPA:
$ xcodebuild -exportArchive -archivePath $PWD/build/CLI.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
Параметры экспорта Plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>${IPA_EXPORT_METHOD}</string>
<key>provisioningProfiles</key>
<dict>
<key>com.iamdeveloper.myproject.dev</key>
<string>My Provision File</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Developer</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>XXXXXXXXX</string>
<key>thinning</key>
<string><thin-for-all-variants></string>
</dict>
</plist>
РЕДАКТИРОВАТЬ: Я могуопределить разные exportOptionsPlists для разных целей.Это решает мою проблему, но я хочу добиться этого одним файлом plist.