51

Mac Mini Server (OSX 10.7) で実行される bash スクリプトを使用して、クライアント用のアプリを構築するプロセスを自動化しようとしています。

私のスクリプトは、もともとhttps://gist.github.com/949831に投稿された github の非常に便利なスクリプトに基づいています。

xcodebuild を使用してアプリをビルドし、xcrun を使用して mobileprovision ファイルに署名して埋め込みます。

GUI (ダブルクリックなど) を使用して Xcode に手動でインストールした mobileprovision ファイルを使用してこれらすべてを行うと、正常に動作します。サーバーにコピーされた mobileprovision ファイルを SCP で使用しようとすると失敗します (コード署名エラー: プロビジョニング プロファイル '123abc123' が見つかりません)。

おそらくこれは、ファイルが「インストール」されていないためです。

端末から mobileprovision ファイルをインストールする方法はありますか? SSH を使用しているため、「open」コマンドなどを使用しても機能しません。

ありがとう!

4

7 に答える 7

83

(Benが行ったように)外部依存関係をダウンロードしたくない場合は、ほとんどの場合、以下が機能するはずです。

uuid=`grep UUID -A1 -a adhoc.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
cp adhoc.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision

UUIDは16進数で構成されているため、正しい範囲は[-A-F0-9]であり、ではないことに注意してください[-A-Z0-9]

ボーナス:プロファイルのダウンロードとインストール

次のスニペットは、クパチーノツールを使用して、すべての配布プロファイルを開発者ポータルからダウンロードしてインストールします。

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

于 2012-05-27T15:17:22.583 に答える
28

この質問をして以来、私は自分で解決策を構築しました。秘訣は、ファイルを〜/ Library / MobileDevice / Provisioning Profiles /フォルダーにコピーすることですが、(ここでは注意が必要です)名前を[UUID].mobileprovisionに変更します。

UUIDは、ファイル自体のテキスト部分(plist内)内に保持されます。残念ながら、ファイルにはバイナリも含まれているため、「デフォルトの読み取り」では読み取ることができません。幸いなことに、この男はUUID(および他のいくつかのもの)を取得するための小さなコマンドラインユーティリティを構築しました。

これが私の完全に機能するスクリプトです:

https://gist.github.com/2568707

于 2012-05-01T15:18:11.677 に答える
7

他のすべての回答のまとめupdate_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

プロビジョニングのニーズに簡単に適応できます。

于 2014-10-04T12:12:25.890 に答える
3

Jenkinsでビルドを実行しましたが、同様の問題が発生しました。アドホックプロビジョニングプロファイルは頻繁に変更され、変更するたびに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>

「」は、ターゲットのビルド設定の「コード署名」セクションの下に表示されるものです。

于 2012-05-02T16:40:40.360 に答える
1

に関する最近の開発はないようcupertinoです。プロビジョニング プロファイル (作成、ダウンロード、更新、修復) を管理するためFastlaneのツールがあります: https://github.com/fastlane/fastlane/tree/master/sigh#readmesigh

于 2016-08-26T20:56:32.460 に答える