1. ホーム
  2. xcode

Xcode 4.6.3でDropbox APIのコードサインに失敗:"コードオブジェクトが全く署名されていません"

2023-11-04 07:21:03

質問

Mac App Store で配布されている OS X アプリを持っていて、最近 Xcode 4.6.3 にアップデートしました。

今、通常のビルドを実行すると、次のようなメッセージが表示されます。

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 を再起動し、クリーン ビルドを実行し、ビルド フォルダをクリーニングしてみました。

どのように解決すればよいですか。

私はこれを理解できたかもしれないと思います。私は OS X Mavericks 上で Xcode 4.6.3 を実行しており、ビルド固有のツールはすべて Xcode アプリケーションにバンドルされているという印象を持っていました。

しかし、どうやら codesign の中にある /usr/bin . Xcodeのインストーラによってそこに置かれたのか、それともバニラシステムのインストールに付属しているのか、私はよくわかりません。しかし man のページを読むと codesign のページで、こんな便利なオプションを見つけました。

--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/6774960 )の2週間前(~2013年6月)の記事で、(二番煎じではあるが)言及している。

@isaiah 研究室の人に聞いてみたんです。彼が言うには、コードサインは現在 埋め込みフレームワークに個別に署名する必要があります。 を個別に署名する必要があるそうです。

手動で再実行する codesign を追加しながら、Xcode が通常実行するコマンドを手動で再実行します。 --deep フラグを追加すると、アプリケーションに正しく署名します。

この手動署名がどのような意味を持つのか、あるいはXcodeのビルドを微調整して、アプリケーションに --deep フラグを自動的に追加するように Xcode のビルドを微調整できるかどうかはまだわかりませんが、これが根本的な問題であるように思われます。( codesign はもはや自動的にアプリ バンドルに深く署名しません)。