web-dev-qa-db-ja.com

コデザイン:封印されていないコンテンツとは何ですか?

XCode 6にアップグレードし、開発者IDで署名されたMacアプリをビルドしようとしました。ただし、次のコードサインエラーが発生します。

unsealed contents present in the root directory of an embedded framework

これは私が使用するDropbox.frameworkにも当てはまります。明らかにそれは署名できませんでした。エラーはどういう意味ですか?なにが問題ですか?

19
codingFriend1

OS Xコード署名の詳細 をご覧ください

OS Xバージョン10.9.5以降、OS Xが署名済みアプリを認識する方法が変更されます

OS Xバージョン10.9以降の期待に応じてバンドルを構造化します

  • 署名付きコードを含める必要があるディレクトリには、署名付きコードのみを含めます。
  • 含むべきディレクトリにのみリソースを含める
    リソース。
  • --resource-rulesフラグまたはResourceRules.plistを使用しないでください。それらは廃止され、拒否されます。
9
Parag Bafna

問題はversion.txtにあるファイルDropbox.framework。これはフレームワークがどのバージョンかを知るのに役立ちますが、コード署名に問題がなくなったようです。

ファイルを削除すると、すべてが再び正常に機能しました。

10
codingFriend1

ヨセミテ以前の.frameworkバンドルをヨセミテに適合させようとしたので、今日数時間同じ問題がありました。結局のところ、問題は私が作成したシンボリックリンクであり、厳密にはディレクトリ内のファイルではありませんでした。

最初、パッケージのルートディレクトリに壊れたシンボリックリンクがありました。直した。

追加したシンボリックリンク:

Headers -> Versions/Current/Headers/

必要なもの:

Headers -> Versions/Current/Headers

その余分なスラッシュはキラーです。

これは2つの異なる場所で2回噛んだことに注意してください。

Current -> 1.8.0/

必要なところ

Current -> 1.8.0

私は* nixerではないので、これは常識かもしれませんが、うまくいけば、私のような他のWindows開発者に役立つでしょう。

7
ArtHare

私は今日同様の問題に遭遇しました...私のエラーは「バンドルルートに存在する封印されていないコンテンツ」でした。私の修正は、アプリで使用していたカスタムアイコンを削除することでした。 AppName.app/Icon?どういうわけか壊れていた...

2
Sonic84

私は今日これをしばらく調査しましたが、私が見つけた提案のどれも助けにならなかった、私のsdl_mixer.frameworkには、iTunesConnectを通り抜けることができなかった5つの埋め込みフレームワークがありました。私の解決策は、実際には必要のない3つを削除することでした。残りの2つは、sdl_mixerに埋め込まれていないスタンドアロンフレームワークとしてプロジェクトに追加されました。うまくいけば、これが誰かの役に立つと思います。私はこれに何時間も費やしました。

1
nuclearnova

別のフレームワークに署名しようとしたときに問題にぶつかりました。ここでの答えは非常に刺激的です。フレームワーク構造にいくつかの問題があるはずですが、それらは見つかりました。構造は正しいようです、シンボリックリンクは "/"を末尾に付けていません。余分なファイルはありません(lsでチェックしています)...

たくさん試してみて、ようやく余分な.DS_Storeフレームワークでは、これは本当に面倒です:(

それでもエラーが発生する場合は、隠しファイルがないか確認してください。

0
Gavin

私も同じ問題を抱えていて、うまくいったのはDerivedDataフォルダーの内容を削除することでした。 Xcodeは問題の原因となっているリソースを特定しないため、すべてを最初から再構築しました。クリーンも機能しませんでした。

0
André Fratelli

私の場合、私はいくつかの古いフレームワークが内部にあるアプリに署名しようとしていました。これらの提案はどれも役に立ちませんでした。このメッセージが表示されないようにするには、フレームワーク内からPkgInfoファイルを削除する必要があることがわかりました。

0
Ken Aspeslagh

この問題の別の考えられる原因:同じ名前と同じインストール場所を持つiOSアプリとmacOSアプリをビルドしている場合、両方が同じアプリバンドルに書き込まれていることがあります。最初にiOSアプリビルドはそのコンテンツをアプリバンドルルートに直接配置し、次にmacOSアプリビルドはそのコンテンツをアプリバンドルの「Contents」フォルダーに配置します。その後、コードサインはiOSリソースについて不平を言います。

0
bleater

コードサインは非常に不透明であり、一般に問題のあるリソースが何であるかを伝えることを拒否しているので、私はこれを2回ヒットしたので、原因を追加します。

ある場合には、署名されていないバイナリ実行可能ファイルがありました。バンドル全体を歌う前に、各実行可能ファイルとフレームワークに個別に署名する必要があります。

それから私は別の事件を襲った。公開プロセスの一部としてコードに署名し、各実行可能ファイルとフレームワークに再署名します。しかし、Xcodeもバンドルに署名し、_CodeSignatureフォルダーに残骸が残っていることがわかりました。そこで、各実行可能ファイルとフレームワーク、次にバンドルに署名する前に、Xcodeで生成された_CodeSignatureフォルダーを次のように事前に削除します。

find MyApp.app -name _CodeSignature -type d -exec rm -rf {} +

うまくいけば、この成功した情報により、誰かがいつか時間を節約できることを願っています。

0
Peter N Lewis