Предоставить xcodebuild с файлом .mobileprovision

Я настраиваю Jenkins для автоматизации сборки iOS. Есть ли возможность предоставить файл .mobileprovision, который не добавлен в средство инициализации в Xcode для xcodebuild?

Я знаю, что я могу использовать PROVISIONING_PROFILE и PROVISIONING_PROFILE [sdk = iphoneos *], но они требуют, чтобы профиль подготовки был добавлен в Организатор.

Я знаю, что могу выполнить операцию с помощью xcrun. Но перед запуском xcrun я должен успешно подписать приложение с помощью xcodebuild.

Есть ли способ, которым я могу просто предоставить файл профиля обеспечения (.mobileprovision) для xcodebuild?

Ответ 1

У нас есть решение для этого - по существу, вам нужно "установить" файл .mobileprovision, скопировав его в каталог с именем UUID файла мобильного обеспечения. Это то, что фактически делает Xcode Organizer при двойном щелчке файла .mobileprovision.

Там небольшая программа под названием mpParse, которая может извлечь UUID из файла mobileprovision, который использует script - ссылка для загрузки в коде. Тогда он мертв просто, чтобы скопировать файл mobileprovision в нужное место.

Вот оболочка script, которую я сделал для этого:

#!/bin/sh

# 2012 - Ben Clayton (benvium). Calvium Ltd
# Found at https://gist.github.com/2568707
#
# This script installs a .mobileprovision file without using Xcode. Unlike Xcode, it'll 
# work over SSH.
#
# Requires Mac OS X (I'm using 10.7 and Xcode 4.3.2)
#
# IMPORTANT NOTE: You need to download and install the mpParse executable from     http://idevblog.info/mobileprovision-files-structure-and-reading
# and place it in the same folder as this script for this to work.
#
# Usage installMobileProvisionFile.sh path/to/foobar.mobileprovision

if [ ! $# == 1 ]; then
 echo "Usage: $0 (path/to/mobileprovision)"
 exit
fi

mp=$1

uuid=`/usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i ${mp})`

echo "Found UUID $uuid"

output="~/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision"

echo "copying to $output.."
cp "${mp}" "$output"

echo "done"

Вы можете скачать script прямо из https://gist.github.com/2568707

Как только вы запустите script, вы можете использовать PROVISIONING_PROFILE и PROVISIONING_PROFILE [sdk = iphoneos *] в xcodebuild для создания своего приложения. Мы используем это в производстве.

Изменить: просто для справки, я задал этот вопрос здесь немного (Может ли файл Xcode.mobileprovision быть установлен в командной строке?) и придумал выше, когда никто, казалось, не знал: -)

Update: В качестве альтернативы mpParse можно использовать инструменты apple: /usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)

Ответ 2

Если вы используете вздох от fastlane, вы можете присвоить его выход переменной provision_id=sigh

это также работает, если sigh имеет параметры: sigh(...)

Это единственный script, который работал у меня:

`var = $(grep UUID -A1 -a | grep -io "[-A-Z0-9] {36}" ) '

использовать с: "$var.mobileprovision"