Как построить проект XCode через командную строку в 2019 году с правильным профилем обеспечения? - PullRequest
1 голос
/ 15 мая 2019

Я бы хотел автоматизировать сборки ios для Unity. Первая часть не проблема. Он сгенерировал целую папку для xcode с файлом xcodeproj.

Моя цель - написать один скрипт, который собирает мой проект и загружает его в испытательный полет appstore. Мне удалось получить файл .ipa с помощью этих команд:

xcodebuild -project Unity-iPhone.xcodeproj -scheme "Unity-iPhone" -sdk iphoneos -configuration Release archive -archivePath export/build/ts2.xcarchive
xcodebuild -exportArchive -archivePath export/build/ts2.xcarchive -exportOptionsPlist info.plist -exportPath export/build -allowProvisioningUpdates

Однако, когда я попытался загрузить его с помощью altool, он выдал ошибку об использовании неправильного профиля обеспечения. Правда, у него был профиль развития, а не дистрибутив. Как я могу указать, какой использовать при подписании?

К сожалению, xcode меняет свои способы сделать это достаточно часто, чтобы сделать все онлайн-ресурсы об этом бесполезными

1 Ответ

1 голос
/ 15 мая 2019

Вы можете создать .plist, который содержит профиль обеспечения, используемый для распространения.Затем укажите на него в параметре -exportOptionsPlist.

Если вы хотите сделать это динамически в скрипте, вы можете сгенерировать .plist следующим образом

    cat > "$BUILD_DIRECTORY/exportOptions.plist" <<EOF
<?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>method</key>
    <string>$EXPORT_METHOD</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>$BUNDLE_IDENTIFIER</key>
        <string>$PATH_TO_PROVISION_PROFILE</string>
    </dict>
</dict>
</plist>
EOF

Затем на -exportArchive шаг до -exportOptionsPlist "$BUILD_DIRECTORY/exportOptions.plist"

Для магазина приложений $EXPORT_METHOD будет app-store, но вы можете расширить его до enterprise, ad-hoc, если это будет необходимо, и заменить на соответствующие пути обеспечения.

(PS Я не использую -allowProvisioningUpdates, поэтому вы можете попробовать удалить его.)

...