Mac Mini Server(OSX 10.7)で実行されるbashスクリプトを使用して、クライアント向けのアプリを構築するプロセスを自動化しようとしています。
私のスクリプトは、元々 https://Gist.github.com/949831 に投稿されたgithubの非常に有用なスクリプトに基づいています。
Xcodebuildを使用してアプリを構築し、xcrunを使用してmobileprovisionファイルに署名して埋め込みます。
Mobileprovisionファイルでこれをすべて実行すると、GUIを使用して手動でXcodeにインストール(ダブルクリックなど)して正常に動作します。 SCPでサーバーにコピーされたmobileprovisionファイルを使用しようとすると失敗します(コード署名エラー:プロビジョニングプロファイル '123abc123'が見つかりません)。
これはおそらく、ファイルが「インストール」されていないためです。
ターミナルからmobileprovisionファイルをインストールする方法はありますか?私はSSHを使用しているため、「open」コマンドなどを使用しても機能しません。
ありがとう!
この質問をして以来、私は自分で解決策を構築しました。秘密は、ファイルを〜/ Library/MobileDevice/Provisioning Profiles /フォルダーにコピーすることですが、(ここでは注意が必要です)名前を[The UUID] .mobileprovisionに変更します。
UUIDは、ファイル自体のテキスト部分(plist)内に保持されます。残念ながら、ファイルにはバイナリも含まれているため、「デフォルトの読み取り」では読み取ることができません。幸いなことに this guy はUUIDを取得するための小さなコマンドラインユーティリティを構築しました(そして、他のいくつかのものを再び出力します)。
これが私の完全なスクリプトです:
外部依存関係をダウンロードしたくない場合(Benがしたように)、ほとんどの場合、次のように動作します。
uuid=`grep UUID -A1 -a adhoc.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
cp adhoc.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision
a IDは16進数で構成されている なので、正しい範囲は[-A-F0-9]
であり、[-A-Z0-9]
ではありません。
cupertinoツール を使用すると、次のスニペットは開発者ポータルからすべての配布プロファイルをダウンロードしてインストールします。
ios profiles:download:all --type distribution
for file in *.*provision*; do
uuid=`grep UUID -A1 -a "$file" | grep -io "[-A-F0-9]\{36\}"`
extension="${file##*.}"
echo "$file -> $uuid"
mv -f "$file" ~/Library/MobileDevice/Provisioning\ Profiles/"$uuid.$extension"
done
cupertino(ios
コマンド)は、Sudo gem install cupertino
でインストールできます。
他のすべての回答の概要 pdate_provisioning_profile.sh :
#!/bin/sh
#
# Download and install a single iOS provisioning profile
# Requires https://github.com/nomad/cupertino
#
# Usage
# - Login to your account once:
# ios login
# - Configure TEAM and PROFILE (instructions below)
# - Run update_provisioning_profile.sh at anytime, usually after adding/removing devices to the profile
# Configure the team identifier
# Copy it from developer portal or just use cupertino to get it:
# ios devices
# Copy the string in parens and set it as TEAM
TEAM="team id"
# Configure the profile name you want to manage
# Copy it from developer portal or use cupertino to get a list (ignoring Xcode managed profiles):
# ios profiles --team ${TEAM} | grep -v 'iOS Team Provisioning Profile'
# Copy the name as-is and set as PROFILE
PROFILE="profile name"
# Fetch the profile using `cupertino` tool
# you need to run `ios login` once to setup the account
ios profiles:download "${PROFILE}" --team ${TEAM}
PROFILE_FILE=`echo $PROFILE | tr ' ' '_'` # `cupertino` tool will replace spaces with _
UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ${PROFILE_FILE}.mobileprovision)`
# copy where Xcode can find it
cp ${PROFILE_FILE}.mobileprovision "$HOME/Library/MobileDevice/Provisioning Profiles/${UUID}.mobileprovision"
# clean
rm ${PROFILE_FILE}.mobileprovision
プロビジョニングのニーズに簡単に適応できます。
Appleは、各キーと値のペアの下の.mobileprovisionプロビジョニングプロファイルファイルに空行を追加し、grepオプションは機能しなくなりました。
pythonスクリプトを使用してPlistBuddyとセキュリティで取得する方法は次のとおりです。
command = "/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i abc.mobileprovision)"
uuid = os.popen(command).readline().rstrip('\n')
Jenkinsでビルドを実行しましたが、同様の問題がありました。 Ad Hocプロビジョニングプロファイルは頻繁に変更されるため、変更するたびにビルドスレーブがxcodeにインストールされるのを回避したいので、ここで作業します。
/usr/bin/xcrun -sdk iphoneos PackageApplication -v <path to yourapp.app> -o <path to your .ipa file> --sign "<Name of signing identity>" --embed <path to .mobileprovision file>
「」は、ターゲットのビルド設定の「コード署名」セクションに表示されるものです。
Fastlaneため息を使用して特定の暫定ファイルをインストールするか、新しいファイルを作成できます。
fastlane sigh renew --adhoc -n "provisional-profile-name" --app_identifier "app-identifier" -u "user-name" --ignore_profiles_with_different_name
provisional-profile-nameは単なるプロファイルの名前であり、.mobileprovision拡張子は含まれません。
すべてのデバイスUUIDが追加された新しいアドホックプロファイルを作成するには、
fastlane sigh --adhoc --app_identifier "app-identifier" -u "username"
Fastfile、
lane :build do
sigh(
adhoc: true,
app_identifier: "***APP_ID**",
provisioning_name: "**Profile_name**",
username: "Apple_ID",
force: true,
skip_certificate_verification: true,
)
gym(
#export_options: "exportPlist.plist",
scheme: "**scheme-name**",
export_method: "ad-hoc",
xcargs: "PROVISIONING_PROFILE=$SIGH_UUID",
)
end
cupertino
の最近の開発はないようです。 Fastlane
には、プロビジョニングプロファイル(作成、ダウンロード、更新、修復)を管理するsigh
というツールがあります。 https://github.com/fastlane/fastlane/tree/master/ sigh#readme