xcodebuildに.mobileprovisionファイルを提供する 質問する

xcodebuildに.mobileprovisionファイルを提供する 質問する

iOS ビルドを自動化するために Jenkins を設定しています。Xcode のプロビジョニング ツールに追加されていない .mobileprovision ファイルを xcodebuild に提供することは可能でしょうか?

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

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

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

ベストアンサー1

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

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

スクリプトは以下から直接ダウンロードできます。出典: github.com

スクリプトを実行したら、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)

おすすめ記事