web-dev-qa-db-ja.com

xcodebuildに.mobileprovisionファイルを提供します

IOSビルドを自動化するためにJenkinsをセットアップしています。 Xcodeのプロビジョニングツールに追加されていない.mobileprovisionファイルをxcodebuildに提供する可能性はありますか?

PROVISIONING_PROFILEとPROVISIONING_PROFILE [sdk = iphoneos *]を使用できることは知っていますが、オーガナイザーにプロビジョニングプロファイルを追加する必要があります。

Xcrunで操作できることはわかっています。ただし、xcrunを実行する前に、xcodebuildを使用してアプリに正常に署名する必要があります。

プロビジョニングプロファイルファイル(.mobileprovision)をxcodebuildに提供する方法はありますか?

26

これに対する解決策があります-基本的にあなたがする必要があるのは、モバイルプロビジョニングファイルのUUIDにちなんで名付けられたディレクトリにコピーすることによって.mobileprovisionファイルを「インストール」することです。これは、.mobileprovisionファイルをダブルクリックしたときにXcodeオーガナイザーが実際に行うことです。

スクリプトが使用するmobileprovisionファイルからUUIDを抽出できるmpParseという小さなプログラムがあります-コード内のダウンロード用のリンク。次に、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 から直接ダウンロードできます。

スクリプトを実行したら、xcodebuildでPROVISIONING_PROFILEおよびPROVISIONING_PROFILE [sdk = iphoneos *]を使用してアプリを作成できます。これを本番環境で使用しています。

編集:参考までに、私は少し前にここで本質的にこの質問をしました( Xcode .mobileprovisionファイルをコマンドラインから「インストール」できますか? )そして誰もいないときに上記を思い付きました知っているようでした:-)

更新:mpParseの代わりに、Appleツール:/usr/libexec/PlistBuddy -c 'Print UUID' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)

47
Ben Clayton

Fastlaneからため息を使用する場合は、その出力を変数_provision_id=sigh_に割り当てることができます。

これは、ため息にパラメータがある場合にも機能します:sigh(...)

これは私のために働いた唯一のスクリプトです:

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

一緒に使用:_"$var.mobileprovision"_

0
wolffan