web-dev-qa-db-ja.com

Xcode 6、Mac OS X YosemiteまたはMavericksで「サブオブジェクトのコードオブジェクトがまったく署名されていない」を修正するにはどうすればよいですか?

アプリケーションをコンパイルすると、次のエラーが発生します。

CodeSign /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project\ X.app
    cd /Users/pupeno/Projects/ProjectX
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate

Signing Identity:     "Mac Developer: José Fernández (G4PM7K38JH)"

    /usr/bin/codesign --force --sign A21FB31766DDCBB28FBB4E4DD86E3743024A45F3 --entitlements /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Intermediates/ProjectX.build/Debug/App.build/Project\ X.app.xcent --requirements =designated\ =>\ anchor\ Apple\ generic\ \ and\ identifier\ \"$self.identifier\"\ and\ ((cert\ leaf[field.1.2.840.113635.100.6.1.9]\ exists)\ or\ (\ certificate\ 1[field.1.2.840.113635.100.6.2.6]\ exists\ and\ certificate\ leaf[field.1.2.840.113635.100.6.1.13]\ exists\ \ and\ certificate\ leaf[subject.OU]\ =\ \"XHT4M2DATL\"\ )) /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project\ X.app

/Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project X.app: code object is not signed at all
In subcomponent: /Users/pupeno/Library/Developer/Xcode/DerivedData/ProjectX-cynmgyozflnwbpamwnpsnhgshuyq/Build/Products/Debug/Project X.app/Contents/Frameworks/Paddle.framework
Command /usr/bin/codesign failed with exit code 1

私は2つのフレームワーク、PaddleとSparkleを使用しており、コピーにサインオンするように構成されています。

enter image description here

この問題の解決策を探したところ、Apple( codesign Toolの--deepオプションを正しく使用する )によって公式に推奨されていない--deepサインを実行するための多くの推奨事項を見つけました=)。

また、記事 Code Signing and Mavericks も見つけました。これは、-deepを使用するのは間違っており、代替手段としてスクリプトを使用して各フレームワークの署名を生成することも説明しています。これは、Xcodeにコピーをサインオンするオプションができる前に必要だったものだと思いますが、とにかく試してみました。違いはありませんでしたが、同じエラーが発生します。ログを見ると、「Sign on copy」オプションでバンドルが署名されているため、そのスクリプトを追加すると、バンドルが2回署名されました。

私のコード署名IDは、プロジェクト全体に対して次のように構成され、各ターゲットはそれを継承します。

enter image description here

これはリリースの適切なシグネチャではないことを理解していますが、現時点では、これをローカルでビルドおよび実行できるようにしようとしています。

どんなアイデアが間違っているのですか?それを修正する方法はありますか?という事は承知しています

18
pupeno

問題は、フレームワークであるPaddle.frameworkが破損することでした。シンボリックリンクは指定されたファイルに解決されたので、コンパイルはうまくいきましたが、署名はうまくいきませんでした。

フレームワークを再ダウンロードしてプロジェクトにコピーすると、問題が修正されました。

12
pupeno

私にとっての解決策は、リソースフォルダーを再度追加することでした(フォルダー参照を作成するのではなく、グループを作成するをオンにする)。

9
Bisca

私はコード署名がまだ黒字であることを認めますが、Xcode 6では、署名スクリプト(Xcodeで必要でした)のallを削除することがわかりました5、--deepフラグ)と追加の署名フラグ、およびビルドのフレームワークのファイルのコピー段階で "codesign on copy" オプションを使用するだけで、問題なく機能しました。

4
Brett Terpstra

私にとっては、プロジェクトのビルド設定に移動し、その他のコード署名フラグを--deepに設定する必要がありました。問題は、プロジェクトの私のフレームワークが署名されていないことでした。

2
BaptisteB

私にとっては、bashビルドスクリプトを誤ってターゲットに追加したことがわかりました。卑劣なスクリプトが誤ってターゲットにコピーされていないことを確認して、問題を修正しました。

1
johnboiles

この問題が引き続き発生しているすべてのユーザーについて、ビルド設定の「製品名」がinfo.plistで設定されている「実行可能ファイル」と一致することを確認してください。

通常、既存のコードを複製する場合、製品名または実行可能ファイルを変更するだけで、この不一致により問題が発生します。 enter image description here

enter image description here

1
Satendra dagar