XCodeの「コード署名ID」とは何ですか?
それらは証明書ですか?
それらは秘密鍵ですか?
それらはアプリIDですか?
それらはプロビジョニングプロファイルですか?
ターゲットビルド設定に移動すると、コード署名IDが要求されるため、これを把握する必要があります。
私たちは秘密鍵を使用してコードに署名したと思いました。ただし、秘密鍵の名前は表示されません。証明書のリストが表示されます(確信はありませんが)。
非常に迅速に深くなり、iOSアプリケーションのデバイスビルドを作成しようとするときに頭痛の種となるトピックに間違いなくヒットしました。まず、コード署名プロセスに関係する各用語を少し構造化して(後で、この質問に出くわした人のために)、主な質問に移ります。
CodeSignの用語
IOSデバイスビルドのコード署名フェーズは、アプリケーション実行可能バイナリ自体、埋め込みメディア資産(ボタンテクスチャ、カスタムアートワーク、フォントなど)を含むアプリケーション内のデータの特定の配置を暗号で署名して保護するプロセスです。 )、およびアプリケーションに関するメタデータのセットであり、アプリケーションのデータの一意の「th印」を表します。このthumb印は、AppleとiOSによって使用され、ユーザーのデバイスに配信されるとき、またはユーザーのiOSデバイスで実行されるときにアプリケーションが改ざんされないようにするのに役立ちます。 Appleへの登録、App Identifierのセットアップ、開発と配布の証明書の要求、テストデバイスのセットの登録、最後に開発作業のためのプロビジョニングプロファイルの要求が必要です。これらの各要素の役割は次のとおりです。
このファイルが存在することと、「Who」(証明書)、「What」(AppID)、および「Where」という概念が含まれているため、開発者が生成したアプリをデバイスにインストールできるかどうかを決定するのはthumb印のチェックです'(どのデバイス)。
素晴らしい、わかりました...さて、このCode Sign Identityについてはどうですか?
個々のビルドターゲットのビルド設定のコンテキストでは、Code Sign Identityという用語は、開発者のマシンのキーチェーンにインストールされる証明書の共通名を指します。 Xcodeビルド設定では、開発者がCodeSignに使用するIDを選択する必要があるオプションのリストとして表示されます。このメニューの各セクションにエンコードされた情報はalotです。
最初に黒のテキストを見る-「iPhone Developer:Bryan Musial(XXXXXXXXXX)」の上の画像から-これは、Xcodeがコード署名に使用される公開キーと秘密キーを見つけるために実際に使用する主要なアイテムです。このアイテムを選択すると、Xcodeにキーチェーンに到達し、「Common Name」フィールドがその文字列に一致する証明書を見つけて、その証明書(公開鍵を含む)と関連する秘密鍵を取得して、コード署名操作。
キーチェーンアクセスを開き、「iPhone Development:...」または「iPhone Distribution:...」証明書のいずれかをダブルクリックすると、証明書にエンコードされたすべての情報が表示されますApple開発者への問題:最初の画像のエントリを選択すると、Xcodeがキーチェーンに到達し、この証明書を引き戻します(注:一意の識別情報がXで変更または変更されました)。
ご覧のとおり、Xcodeの選択からの黒いテキストは、証明書の[共通名]フィールドと完全に一致するため、Xcodeはこの証明書とそのリンクされた秘密キーをプルして、アプリのコード署名で使用します。
Xcodeの設定をもう一度振り返ると、そのメニュー選択にもテキストが多くあることがわかります。明るいグレーのテキストは、アプリケーションに組み込まれるプロビジョニングプロファイルを示しています。私の設定例の場合、Xcodeは、AppIDが「com.myiosapp。*」に設定されているプロビジョニングプロファイル「MyiOSApp Testing」を取得します。 Xcodeはプロビジョニングプロファイルの隠蔽に非常に貪欲であり、幸いにもオーガナイザーはインストールされているプロビジョニングプロファイルを確認し、そこに含まれる基本データについて理解するのに最適な場所を提供します。再度、最初の画像のXcodeコード署名IDの場合、オーガナイザーの関連するプロビジョニングプロファイルは次のようになります。
[名前]列と[アプリケーション識別子]列の末尾はXcode設定の明るい灰色のテキストと一致するため、これはコード署名中に使用するために選択されるプロビジョニングプロファイルです。行の最後にある「ステータス」列に注意することも重要です。この場合、緑色で、「有効なプロファイル」を示します。つまり、私のキーチェーンには、そのプロビジョニングプロファイルでエンコードされた少なくとも1つの証明書の公開キーと秘密キーの両方があります。このステータスが緑以外の場合、現在の公開/秘密キーおよび/またはプロビジョニングプロファイルの設定に問題があります-使用しようとしているプロビジョニングプロファイルのステータスが緑に設定されていない限り、コード署名は機能しません。他の可能なステータスオプションは次のとおりです。
あなたをつまずかせる他のアイテム
公開キーと秘密キーの両方をインストールすること、およびプロビジョニングプロファイルが適切に設定されていることを確認することに関するすべてのニュアンスに加えて、開発者をつまずかせる可能性のあるものがいくつかあります。最初に、Xcodeはプロビジョニングプロファイルを収集し、削除するよう指示するまでそれらを保持します。理論的には、プロビジョニングプロファイルに変更を加え、新しいバージョンをダウンロードしてインストールするシナリオを除き、これはそれほど大きな問題ではありません。多くの場合、Xcodeは適切なプロファイルを取得しますが、それが正しくない場合があり、証明書、識別子とプロファイルツール、およびキーチェーンを数時間かけて、何が起こっているのかを試してみてください。
提案1:プロビジョニングプロファイルの新しいバージョンをインストールする場合、Xcodeが決定を下す必要のある位置に置かれないように、古いプロファイルを削除します。
開発証明書または配布証明書を再発行すると、同様のことが起こります。ほとんどの場合、Xcodeは、ビルド中にあいまいな証明書に関する警告をトリガーします。
提案2:ビルド中のあいまいさの警告に注意してください。これは、ビルド基準を満たす古い証明書があり、誤って使用されてビルドの問題を引き起こす可能性があることを意味します。
提案3:証明書を扱うキーチェーンにいるときはいつでも、赤い「X」が付いている「iPhone Developer:...」または「iPhone Distribution:...」の証明書を探してください。これは、証明書の有効期限が切れているか取り消されていることを示すインジケータです。いずれにせよ、この公開鍵(および潜在的にリンクされた秘密鍵)は、ビルドの目的でこれ以上使用することはなく、削除できます。
最後に、Code Sign Identity設定には、「Automatic Profile Selector」としてリストされるオプションもあります。多くの場合、ビルドターゲットの設定からAppIDを自動的に検索し、そのAppIdに一致し、公開キーと秘密キーの両方を持つ証明書を含むプロビジョニングプロファイルを検索するために最善を尽くすため、このオプションを使用します。カスタムビルドの状況によっては、このオプションを使用できない場合があり、最初の画像のデモ設定のように、固定された特定のオプションのいずれかを使用する必要があります。固定オプションを使用する場合は注意してください-プロビジョニングプロファイルを更新するときは常に、新しいバージョンに合わせてコード署名IDビルド設定も更新する必要があります。
重要なポイント
ビルド構成で幸運を祈ります。他にフォローアップの質問がある場合はお知らせください。