4

App Store で承認のために Mac アプリを送信しようとしていますが、Growl とリンクすると検証エラーが発生します。コマンド ラインから再コード デザインしようとしていますが、次のエラーが発生します。

Ashs-MacBook-Pro:500px Uploader ash$ codesign -f -v -s "3rd Party Mac Developer Application: 500px Inc." ./Growl.framework/Versions/A
./Growl.framework/Versions/A: replacing existing signature
./Growl.framework/Versions/A: object file format unrecognized, invalid, or unsuitable

フレームワークを再ダウンロードしようとしましたが、うまくいきませんでした。誰かが私が間違っていることを見ますか?

4

4 に答える 4

3

本当に奇妙なことに、私はこのようにフレームワークを辞任することができました:

codesign -fs "3rd Party Mac Developer Application: Future Simple" Growl.framework/Versions/A/Growl
Growl.framework/Versions/A/Growl: replacing existing signature

(ところで:私はXcode4.3.1とGrowl1.3.1を使用しています)

于 2012-04-03T18:34:24.737 に答える
2

フレームワークのコード署名時に「バンドル形式が認識されない、無効、または不適切」というエラーに対処するために 1 日を費やしました。私の場合、XCode 4.6.1 を使用しており、Qt フレームワークに署名しようとしていました。

最初に、Apple のドキュメント ( TN2206 ) には、ライブラリの実行可能ファイルではなく、バージョン管理されたフレームワーク ディレクトリにコード署名する必要があることが明示的に記載されていることに注意してください。

これについては 、Mac App Store のフレームワーク バンドルをどのようにコード署名しますか? で詳しく説明します。

したがって、それに基づいて、Ash の元の質問のコマンド ラインは正しいです。ただし、同じエラーが発生していました。

そのコマンドラインで動作するようになりました。これが私がしなければならなかったことです:

  • 正しいバージョンの CODESIGN_ALLOCATE を使用していることを確認してください。これは、ここの回答の多くで議論されています: iPhone Codesign object file format invalid or unsuitable XCode を取得してアプリに署名できる場合は、ビルド ログで CODESIGN_ALLOCATE パスを見つけることができます。

  • バージョン管理されたディレクトリ (上記の質問の ./Growl.framework/Versions/A) に Resources/Info.plist が含まれていること、および Versions/Current -> Versions/A からのリンクがあること、およびリンク Resources - があることを確認してください。 > フレームワーク バンドルの最上位にあるバージョン/現在/リソース。Versions/A/Resources/Info.plist が存在しないと、バージョン管理されたフレームワーク ディレクトリに署名できないことがわかりました。フレームワークの正しい構造について詳しくは、こちらこちらをご覧ください。または、いくつかのシステム フレームワークを参照して、フレームワークがどのように構造化されているかを理解してください。

  • 前のポイントに加えて、Apple docs に示されているように、フレームワーク バンドル内のシンボリック リンクが正しく構造化されていることを確認してください (番号付きバージョンへの Current リンク、Current へのトップ レベル リンク) 。これはコード署名には影響しませんが、これを正しく行わないとアプリは拒否されます。

  • フレームワークの Info.plist で CFBundleExecutable が正しい名前 (実行可能ファイル名) に設定されていることを確認してください。

于 2013-08-09T08:59:59.290 に答える
0

エラーは、既に署名されているバンドルに署名しようとした可能性があるようです。Growl フレームワークのソースをダウンロードし、代わりに独自の署名でコンパイルすることで、この問題を修正しました。

コンパイルできないフレームワークで機能するより良い答えが見つかったら、ここに投稿します。

于 2012-02-28T19:05:25.463 に答える