Вопрос по provisioning-profile, ios, xcodebuild – Предоставить xcodebuild с файлом .mobileprovision

26

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

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

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

Is there any way that I can just provide the provisioning profile file (.mobileprovision) to xcodebuild?

Ваш Ответ

2   ответа
47

вам нужно «установить». файл .mobileprovision, скопировав его в каталог с именем UUID файла обеспечения мобильной связи. Это то, что фактически делает Xcode Organizer, когда вы дважды щелкаете файл .mobileprovision.

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

Вот сценарий оболочки, который я сделал для этого:

#!/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"

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

После запуска сценария вы можете использовать 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)

+1 Отличное решение - спасибо, что поделились.
Потрясающие! Спасибо =) Fredrik Andersson
Вместо использованияmpParse сторонний инструмент, вы можете использовать Applesecurity а такжеPlistBuddy инструменты & # x2013; увидетьthis answer & # X2013;/usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)
Рад, что смог помочь!
Супер полезно. Спасибо. Что я не могу понять, так это то, что мы с радостью соглашались с xcodebuild для XCode4, используя имена собственных имен для PROVISIONING_PROFILE (например, PROVISIONING_PROFILE = EasyToRememberName), но это сломалось, как описано здесь с версией XCode5 xcodebuild. Эта информация была неоценима для того, чтобы нас расклеить. Мы по-прежнему используем легко запоминаемые имена файлов, но теперь мы указываем UUID в командной строке.
0

вы можете назначить его вывод переменной provision_id=sigh

это также работает, если у sigh есть params:sigh(...)

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

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

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

Похожие вопросы