私は、あなたの署名の指定された要件が、それ自体(「キーチェーン」目的のために)「同じアプリ」として受け入れられないという問題があると信じています。
これは一般的な原因の1つで、開発者IDのアプリケーション証明書を使用しており、指定された要件はなく、中間の証明書がインストールされていません。
標準の開発者IDの要件は、次のようになります。
designated => anchor apple generic and
identifier \"com.example.appName\" and
((cert leaf[field.1.2.840.113635.100.6.1.9] exists) or
(certificate 1[field.1.2.840.113635.100.6.2.6] exists and
certificate leaf[field.1.2.840.113635.100.6.1.13] exists and
certificate leaf[subject.OU] = \"1AZBYCXDW9V\"))
これを自分自身で構築したい場合は、あなたのバンドル識別子とあなたの証明書からの値を持つsubject.OUで識別子を交換する必要があります。 (あなたがキーチェーンアクセスでそれをダブルクリックすると、組織単位として表示されます。)そして、あなたは「その他のコード署名フラグ」に追加することができます。
--requirements "=designated ..." (the whole mess from above)
ただし、これを行うにはもっと良い方法がありますXcode 4.3.2以降を使用する。開発者IDアプリケーション証明書を使用していることを認識し、キーチェーン内の中間証明書を確認できる場合、デフォルトでこれが生成されます。
また、Xcodeのアーカイブオーガナイザを「開発者ID署名付きアプリケーションの書き出し」に使用する場合は、ターゲットディレクトリからビルドを使用するだけでなく、アプリとその他の署名付き署名に確実に署名します。すべてが適切にセットアップされていることをテストします。 (失敗はかなりわかりにくい - たとえば、 "署名する開発者IDを選択する"ステップでは、有用な情報を持たないメッセージをsyslogに入れて選択するしかないかもしれないが、少なくとも失敗したり成功したという事実は狭められる
Developer Certificate Utilityサイトの「Developer ID Intermediate Certificate」リンクから、「Developer ID Certification Authority」という中間証明書をダウンロードして(ビルドマシンに)インストールする必要があります。 。
最後のこと:ビルドマシンで実行している問題を解決しても、サポートしている最も古いOSバージョンで実際にテストしたいと思っています。たとえば、Lionのcodesignによってコンパイルされた要件は、LeopardやSnow Leopardで解析されないことがあります。その場合は... Gatekeeper vs. Leopard: an ongoing taleを参照してください。
どのようにコード署名していますか? (これは、この問題の最も一般的な理由の1つです) – abarnert
Xcodeのビルド設定でコードサインを設定する必要があります。コード記号の下に自分の開発者IDにコード署名アイデンティティを選択しました。 –
同じマシン?指定された要件(使用しているXcode 4のバージョンによって異なります)を使用している場合、Keychainは古いビルドと新しいビルドを異なるアプリケーションとして扱うことがあります。つまり、新しいビルドがポップアップします古いビルドがキーチェーンに何かを保存していた場合の警告。 – abarnert