最近送信した後、次のエラーが発生しました。
無効な署名-ネストされたアプリバンドル(FooBar.app/Contents/Frameworks/GData.framework)が署名されていないか、署名が無効であるか、Apple提出証明書で署名されていません。詳細については、コード署名およびアプリケーションサンドボックスガイドを参照してください。
無効な署名-ネストされたアプリバンドル(FooBar.app/Contents/Frameworks/Growl.framework)が署名されていないか、署名が無効であるか、Apple提出証明書で署名されていません。詳細については、コード署名およびアプリケーションサンドボックスガイドを参照してください。
無効な署名-ネストされたアプリバンドルlibcurl(FooBar.app/Contents/Frameworks/libcurl.framework)が署名されていないか、署名が無効であるか、Apple提出証明書で署名されていません。詳細については、コード署名およびアプリケーションサンドボックスガイドを参照してください。
だから私はTechnote2206に従ってすべてのフレームワークバンドルに署名しました:
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libcurl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libssh2.1.dylib
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./Growl.framework/Versions/A/Growl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./GData.framework/Versions/A/GData
テクノテ2206は言う:
署名フレームワーク
フレームワークはバンドルであるため、フレームワークに直接署名できると結論付けるのは理にかなっているように思われます。ただし、これは当てはまりません。フレームワークに署名する際の問題を回避するには、フレームワーク全体ではなく、特定のバージョンに署名するようにしてください。
#これは間違った方法です:
codesign -s my-signing-identity ../FooBarBaz.framework
#これは正しい方法です:
codesign -s my-signing-identity ../FooBarBaz.framework/Versions/A
そして、私が結果を検証しようとすると、それは私には良さそうです:
% codesign -vvv FooBar.app/Contents/Frameworks/libcurl.framework
FooBar.app/Contents/Frameworks/libcurl.framework: valid on disk
FooBar.app/Contents/Frameworks/libcurl.framework: satisfies its Designated Requirement
% codesign -vvv FooBar.app/Contents/Frameworks/Growl.framework
FooBar.app/Contents/Frameworks/Growl.framework: valid on disk
FooBar.app/Contents/Frameworks/Growl.framework: satisfies its Designated Requirement
楽しみのために、フレームワークバンドルに直接署名してみましたが、それでも拒否されました。しかし、それはまさにドキュメントがしてはいけないと言ったことです。
なぜそれが無効と見なされるのか推測できますか?アプリのコード署名に使用するのと同じ証明書を使用しています。これは過去に機能したものです。
私の唯一の推測は、既存のplist(フレームワークのInfo.plistsで識別子を所有する必要がありますか?)または資格と関係があるでしょう-何か提案はありますか?