0

私は本当に奇妙なコードサインの問題を抱えています。以前のほぼ同一のバージョンが検証に合格し、App Store に提出されたので、私のコード署名は壊れていません。

最近、iTunesLibraryフレームワークを使用しようとしています。このフレームワークは、アプリケーションがコード署名されている場合にのみ機能します。フレームワークを初期化しようとすると、コード署名の失敗を示す一般的なエラーが発生します。

エラー Domain=NSPOSIXErrorDomain Code=100001 「読み込めませんでした。」UserInfo=0x100329d80 {NSLocalizedDescription=Could not load., NSUnderlyingError=0x10031a430 "The operation could't be completed. (OSStatus error 100005.)"}

私のアプリは、動的にリンクされたものとプラグインの両方の複数のフレームワークに編成されています。フラグを使用し--deepてアプリケーションに再帰的に署名してきましたが、どうやらこれは間違っているようです。現在、run scriptビルド フェーズを使用して、各フレームワークとプラグインに署名しています。これはcodesign、アプリが署名されていることを示しているように機能するようです。

アプリをデバッグ モードでビルドし、アーカイブして、開発者 ID 署名付きプログラムとしてエクスポートし、署名を確認しました。両方のビルド モードがパスします。実行すると、上記のエラーが表示されiTunesLibraryます。本当に奇妙な部分は、アプリをエクスポートして、以下のように自分で再署名すると、iTunesLibrary正しく機能することです。

codesign --force --sign "MyIdentity" --deep MyApp.app

これspctl --assessについて詳しく説明しようとすると、このアプリケーションは正常に動作しているにもかかわらず、署名が不適切であることがわかります。

/Users/me/Desktop/MyApp.app: rejected

iTunesLibrary一方、気に入らないアプリはspctl検査に合格します。

/Users/me/Desktop/MyApp.app: accepted
source=Developer ID
origin=Developer ID Application: Me
4

2 に答える 2

0

解決策は、iTunesLibrary フレームワークをメインの実行可能ファイルと実際に使用しているフレームワークにリンクすることです。

理由を知りたい...

于 2014-02-28T22:27:17.400 に答える
0

フレームワークを埋め込む場合は、.framework をフレームワークの宛先に移動する「ファイルのコピー」ビルド フェーズを作成する必要があります。ビルド フェーズを追加した後、次のような実行スクリプトを追加します。

LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"
IDENTITY="Developer ID Application: Certificate Common Name"
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/your.framework/Versions/A"

要するに、--deepフラグは適切に機能しません。はい、ネストされたバンドルに再帰的に署名しますが、最上位のバンドルのパラメーターをすべてのネストされたバンドルに適用します。次に、アプリの資格により、結果のバンドルが無効になります。

man codesign --deep も次のように述べています。

; 間接的にネストされたものはすべて、 codesign コマンドを再帰的に適用する必要があります。

于 2014-03-01T03:11:41.383 に答える