web-dev-qa-db-ja.com

Xbox 4.6.3でDropbox APIの共同設計が失敗する:「コードオブジェクトはまったく署名されていません」

Mac App Store経由で配布され、最近Xcode 4.6.3に更新されたOS Xアプリがあります。

今すぐ通常のビルドを実行すると、以下を受け取ります:

Command /usr/bin/codesign failed with exit code 1:

/Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all
In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework
Command /usr/bin/codesign failed with exit code 1

私のプロジェクトの他の変更を見分けることはできないようですので、それが4.6.3アップデートに関連する問題なのか、それとも何か他のものなのかわかりません。

Xcodeの再起動、クリーンビルドの実行、ビルドフォルダーのクリーニングを試みました。

75
Craig Otis

これを考え出したのではないかと思います。 OS X MavericksでXcode 4.6.3を実行していますが、ビルド固有のツールはXcodeアプリケーションにバンドルされているという印象を受けました。

しかし、codesign/usr/bin。 Xcodeインストーラーのいずれかによってインストールされるか、Vanillaシステムのインストールに付属するかどうかはわかりません。しかし、mancodesignページを読むと、この気の利いたオプションが見つかりました。

--deep  When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed
             in turn. Beware that all signing options you specify will apply, in turn, to such nested content.
             When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default,
             verification of nested content is limited to a shallow investigation that may not detect changes to the nested code.
             When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only
             code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.

そして、私はこの記事を見つけました( https://alpha.app.net/isaiah/post/677496 )2週間前(2013年6月)から、(とはいえ)言及しています:

@isaiahラボの人に質問した。彼は、コード署名がアプリバンドル全体にコード署名する前に、埋め込まれたフレームワークを個別に署名する必要があると言いました。

Xcodeが通常実行するcodesignコマンドを手動で再実行し、--deepフラグを最後まで付け、アプリケーションに適切に署名します。

この手動署名がどのような影響を与えるのか、Xcodeビルドを微調整して--deepは自動的にフラグを立てますが、これは根本的な問題のようです。 (codesignはアプリバンドルに自動的に深く署名しなくなりました。)

140
Craig Otis

他の回答で強調されているように、コード署名の動作方法に変更があります。 Xcode 5 DPのいずれかをインストールした場合、Xcode 4.6.Xを使用している場合でも新しいツールが使用されます。

この段階(Xcode 4.6.X)で行う必要があるのは、上記の--deepフラグを取得して、コード署名フラグ(ターゲット、ビルド設定)に追加することです(下の画像を参照)。

Specifying Deep Signing of Embedded Frameworks

67
rougeExciter

私にとって、この問題は、プロジェクトで「resources」という名前のフォルダーをドラッグした後に発生しました。名前を別の名前(たとえば、「resourcessss」など)に変更すると、エラーは消えました。

12
andrei

私も同じ問題を抱えていましたが、答えは簡単でした。アプリのコード署名IDが「-」に設定されていたので、「コード署名しない」に設定するだけで解決しました。

「-」は、いくつかのアクションを実行するときのデフォルト設定のようですが、それらが何であるかを説明することはできません。

4
Maury Markowitz

これは気楽に役立つかもしれません:

私は最終的に試行錯誤によって解決策を見つけました。私の場合、ビルド設定で「製品名」変数と一致するフォルダー名がありました。これはプロジェクト名全体とも一致しました!そのため、1つのフィールドを変更しただけです。 「ビルド設定」->「製品名」を変更しました。 MySpecialAppの値がMy-SpecialAppに変更されました。それだけでした!その後、Apple開発者ポータルに再度ログインし、開発と配布用の新しいApp IDとモバイルプロビジョニングプロファイルを作成しました。残りは履歴です。アドホック配布を介して展開すると、リリースが機能します。これに関する最後の注意。これは間違いであり、Appleはユーザーが何か間違ったことを行ったことを警告し、何らかの自動修正アクションを有効にする必要があります。-詳細は http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC .dpuf

2
Thomas Ayoub

私にとっては、破損したフレームワークPaddleMAでした。1. Cocoapodsファイルから削除しました2. Ran pod install 3. Xcodeを再起動しました

そしてそれは問題を解決しました。何らかの理由で、破損したフレームワークにより、残念ながら署名されないようになります。XCodeはこのエラーを実際に明確に表示せず、適切な修正案を提示します。 Appleを修正するためのバグが発生しました。

0
UKDataGeek