iPhone アプリの署名に使用されるプロビジョニング プロファイルの名前は?
-
22-09-2019 - |
質問
を使用するスクリプトを書きました xcodebuild
iPhone アプリケーションのアドホック ビルドを生成します。
このスクリプトを編集して、 プロビジョニングプロファイル ビルドに署名するために使用されます。
これにより、自動的に生成される zip にプロビジョニング プロファイルを含めることができます。こうすることで、アドホック テスターにアーカイブを自動的に送信し、アプリをインストールするための適切なプロビジョニング プロファイルを持っていることを確認できます。
何か方法はありますか アプリケーションの署名に使用されるプロビジョニング プロファイル名またはファイルを抽出します。:
- 構築され署名されたアプリケーションから
- Xcode プロジェクトから (このソリューションは次の Xcode 更新で機能しなくなる可能性があるため、project.pbxproj ファイルを手動で解析したくありません)
- スクリプト可能なその他の方法
許されざる者 提案された コマンドを使用するには security
アプリの署名に使用される証明書の名前を取得します。この情報を取得したら、プロビジョニング プロファイルの名前を見つける方法はありますか?
私が試したことは次のとおりです。
残念ながら、ビルド中の xcodebuild の出力にはこの情報は含まれません。CodeSign ステップ中に、次の行があります。
/usr/bin/codesign -f -s "iPhone Distribution: My name" ...
しかし、これを証明書と照合することはできません。
コードデザインとコマンドの使用を検討しました
/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo有望そうに見えましたが、必要な情報は得られません。
xcodebuild にも有用なオプションが見つかりませんでした。
解決
プロビジョニングプロファイルは、アプリケーションの中にのすでにあります。 (あなたのテスターはアプリケーションのコピー内部の使用方法を理解していない場合を除きます。)あなたは、あなたのzipファイルに別のコピーを必要としません。
これは、名前のだYourApplication.app/embedded.mobileprovision
このは、あなたの質問に答えていない元のファイル名が失われているので、しかし、それはあなたの大きな問題を解決するように見えるん。
他のヒント
ターミナルから「security」コマンドを使用できます。残念ながら、少なくとも 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:」に関連付けられた SHA1 ダイジェストと一致するキーチェーン内の証明書を簡単に検索できます。あなたの名前"。ただし、これには、キーチェーン API を使用して独自のアプリケーションを作成する必要があります。
これがお使いの Mac で機能するかどうか、または同じセグメンテーション違反の問題が発生した場合はお知らせください。
編集/更新:他のマシンでもバグを確認し、Apple にバグを報告しました。
どのタイプのファイルのために(構築されたアプリケーションの)_CodeSignature / CodeResourcesのplistファイルで探しについて "mobileprovisionの"?
ここで使用してデフォルト(1)はplistファイルを読むためにそれを行うための方法です。あなたが幸せなデフォルトを維持するために「の.plist」接尾辞を持つ何かにCodeResourcesファイルをコピーする必要が...
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」という名前の1を無視する)