4

xcodebuildiPhoneアプリケーションのAdHocビルドを生成するために使用するスクリプトを作成しました。

このスクリプトを編集して、ビルドの署名に使用されたプロビジョニングプロファイルの名前を出力したいと思います。
これにより、自動的に生成されるzipにプロビジョニングプロファイルを含めることができます。このようにして、アーカイブをAdHocテスターに​​自動的に送信し、アプリをインストールするための適切なプロビジョニングプロファイルがあることを確認できます。

アプリケーションの署名に使用されるプロビジョニングプロファイル名またはファイルを抽出する方法はありますか?

  • 構築および署名されたアプリケーションから
  • Xcodeプロジェクトから(このソリューションは次のXcodeアップデートで機能しなくなる可能性があるため、project.pbxprojファイルを手動で解析したくありません)
  • スクリプト可能なその他の方法

Unforgiven、このコマンドsecurityを使用して、アプリの署名に使用された証明書の名前を取得することを提案しました。この情報を入手したら、プロビジョニングプロファイルの名前を見つける方法はありますか?


これが私が試したことです:

残念ながら、ビルド中のxcodebuildの出力にはこの情報が含まれていません。CodeSignステップの間に、次の行があります。

/ usr / bin / codesign -f -s "iPhoneディストリビューション:私の名前"..。

しかし、これを証明書と照合することはできません。

codesignとコマンドの使用を調べました

/ usr / bin / codesign -d -vvv --entitlements --- r-/Users/lv/Desktop/TicTacBoo.app/TicTacBoo
有望に見えましたが、必要な情報が得られません。
xcodebuildにも便利なオプションが見つかりませんでした。

4

3 に答える 3

6

プロビジョニングプロファイルはすでにアプリケーションに含まれています。zipファイルに別のコピーは必要ありません(テスターがアプリケーション内でコピーを使用する方法を理解していない場合を除く)。

それは名前が付けられていますYourApplication.app/embedded.mobileprovision

元のファイル名が失われるため、これはあなたの質問に答えませんが、それはあなたのより大きな問題を解決するようです。

于 2010-03-04T15:49:56.063 に答える
2

ターミナルから「セキュリティ」コマンドを使用できます。残念ながら、少なくともSnow Leopardを使用したMBPでは、発行する必要のあるコマンドの1つでセグメンテーション違反が発生しているようです。詳細については、ターミナルから発行してください

man security

とにかく、開発/本番証明書がログインキーチェーンに保存されていると仮定して、これを試すことができます。

security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;

2番目のコマンドは(-c引数によって引き起こされる)セグメンテーション違反を引き起こしますが、それはまさにあなたが必要としているものでなければなりません。または、

security find-identity -p codesigning -v;

アプリケーションのコード署名に使用できるすべての有効な証明書のリストを取得します。証明書ごとに、出力にはSHA1メッセージダイジェストも含まれているため、「iPhone Distribution:Yourname」に関連付けられたSHA1ダイジェストに一致するキーチェーンで証明書を簡単に検索できます。ただし、これには、キーチェーンAPIを使用して独自のアプリケーションを作成する必要があります。

これがお使いのMacで機能するかどうか、または同じセグメンテーション違反の問題が発生するかどうかをお知らせください。

編集/更新:他のマシンでバグを確認し、Appleにバグを報告しました。

于 2010-03-04T09:57:21.740 に答える
0

_CodeSignature / CodeResources plistファイル(ビルドされたアプリケーションの)で「mobileprovision」タイプのファイルを探すのはどうですか?

defaults(1)を使用してplistファイルを読み取る方法は次のとおりです。デフォルトを幸せに保つには、CodeResourcesファイルを「.plist」サフィックスが付いたものにコピーする必要があります...

cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision

(私のテストケースでは、そこに2つの.mobileprovisionエントリがありました。「embedded.mobileprovision」という名前のエントリは無視してください)

于 2010-03-04T15:36:43.123 に答える