SDK iOS 8.0の製品タイプの単体テストバンドルにはコード署名が必要です


128

取得

SDK 'iOS 8.0'の製品タイプ 'Unit Test Bundle'にはコード署名が必要です

アプリのターゲットはコード署名で問題ありませんが、テストのターゲットはそうではありません。新しいコンピューターを購入し、コンピューターから新しい開発証明書を作成し、それに応じてプロビジョニングプロファイルを更新し、両方をインストールしましたが、このコード署名エラーを回避できません。

すべての証明書/プロファイルをローカルでワイプして再インストールできるようにする方法はありますか?

おそらく何らかのバグです。


同様のエラーが発生しました-私の修正は、ビルド設定に進み、プロビジョニングプロファイルを自動的に選択するのではなく、選択することでした。
scb998 2014

回答:


129

問題は、プロジェクトがソース管理下にあり、プルするたびに.xcodeprojが更新されることです。また、私のプロビジョニングプロファイルはソース管理のものとは異なるため、単体テストのターゲットは自動的に「Do not code sign」に切り替わります。したがって、Gitをプルするたびにプロファイルを設定するだけです。

どうやら、デバイスに展開する場合、単体テストのターゲットがある場合は、コード署名する必要があります。

手順:

1)ターゲットをテストターゲットに変更します(AppnameTests)

ここに画像の説明を入力してください

2)「コード署名ID」が「コード署名しない」ではないことを確認します。署名するプロファイルを選択してください

ここに画像の説明を入力してください

それを機能させるために私が変更しなければならなかったすべてです。


私は上記の質問で述べたのと同じ問題に直面していますが、それを解決する方法を理解することができず、同じことに関する質問を投稿しました。stackoverflow.com/questions/27312745/...
ニール

それを行う方法について段階的なプロセスを教えてください。
Neal

Xcode 8に問題があった。解像度はあなたのものと同じではなかったが、近い。道を教えてくれてありがとう!
user3259235 2016

また、「コード署名ID」の設定に加えて、「開発チーム」も設定する必要がある場合があります。
bitsand

100

[スキームの編集]に移動して[一時的に]問題を修正し、[ビルド]セクションで、ユニットテストターゲットが[実行]で呼び出されないように削除しました。


1
良いキャッチ!なぜあなたは一時的に言うのですか?それは私には合理的な解決策のように見えます。アプリをストアに提出しましたか?
mokagio 14

アプリをApp Storeに送信しても問題ありません。コード署名をいじることによってより永続的な修正が可能であると考えたため、「一時的に」言ったが、これは手間のかからない迅速な修正であった。
ZS 2014

2
よろしくお願いします。それは私にとって良い解決策のように見えますが、ユニットテストターゲットはとにかく実行すべきではありません。+1
mokagio 14

もっと詳しく説明していただけますか?あなたは私が「ビルド」しなければならないということですか?「ユニットテストをRunで呼び出されないようにする」
LKM

66

ここでのその他のアドバイスは役に立ちませんでしたが、に移動してこのエラーを修正しましたProduct > Scheme > Edit Scheme。次にBuild、左側をクリックして、の横のチェックボックスをオフにしましたAppNameTests。XCode 6.3を使用しています

ここに画像の説明を入力してください


@Almo「テスト」の下にあるボックスのチェックを外さないでください。代わりに、APPNAMEtestsというラベルの行のすべて(チェックを外すことができる)のチェックを外してください。わかりやすくするために、回答にスクリーンショットを含めます。
オリビアコウノトリ

1
私はそれを行い、テスト以外はすべてチェックを外しました。テストのコード署名の試行を停止するには、.plistファイルを削除する必要があることがわかりました。私のプロジェクトは静的ライブラリを構築するため、コード署名する必要はありません。
アルモ

1
ああ大丈夫。この問題が発生する原因はたくさんあり、それを修正する方法もたくさんあるようです。他の誰もあなたの解決策について言及しなかった場合、あなたはそれを別の可能な答えとして投稿することを検討するかもしれません。
オリビアコウノトリ

3
@huggie¯\ _(ツ)_ /¯iOSプログラミングへようこそ!
Olivia Stork

1
@OliviaStorkあなたは私を義務付けました。私の仕事を保存してくれてありがとう
Anurag Shrivastava

29

テストターゲットのビルド設定でプロビジョニングプロファイルを手動で選択して修正しました。

テストターゲット設定->ビルド設定->コード署名->コード署名ID。以前は、「コード署名を行わない」に設定されていました。


おかげで、明示的にプロビジョニングプロファイルを選択できました。
マイクウェラー

また、「ベーシック」ではなく、「すべて」フィルタが上部で選択されていることを確認してください。
マーティ

13

また、ビルドターゲットデバイスを設定すると、テストとデバッグを行うときに問題がなくなります。署名されたコードは、実際に物理的なデバイスにアプリをデプロイする場合にのみ必要です図

私は「myIphone」からシミュレーターのiPhone 6 Plusに変更しました。アプリの開発中に問題が解決しました。


1
しかし、アプリを物理デバイスに展開したい場合はどうでしょうか±!
Marwen Trabelsi 2018年

8

私の場合、私が直面した問題は:

CodeSignエラー:SDK 'iOS 8.4'の製品タイプ 'Unit Test Bundle'にはコード署名が必要です

幸い、ターゲットは何も実装していなかったため、簡単な解決策はそれを削除することです。

ここに画像の説明を入力してください


2

作業のCIで統合テストのコマンドラインからxcodebuildを実行すると、このエラーが発生しました。プロジェクトレベルの設定をcodesignに設定することで、なんとか機能させることができました。何らかの理由でターゲット設定が無視され、プロジェクトの設定に戻りました。


2

上記の解決策で何も機能しない場合は、次の手順に従ってください

「ターゲット」から「情報」の下のappnameTestsを選択します

次を変更

バンドルID:com.ProjectName。$(PRODUCT_NAME:rfc1034identifier)

com.ProjectName.appnameに

バンドル名:$(PRODUCT_NAME)

バンドル名:appname

コンパイルして実行


1

同じセクション(「コード署名」)の「プロビジョニングプロファイル」を「自動」から「MyProvisioningProfile名」に変更することで問題を解決します


0

こんにちは、今日も同じ問題に直面しています。「Spentak」の回答を読んだ後、ターゲットのコード署名をiOSDeveloperに設定しようとしましたが、それでも機能しませんでした。しかし、「プロビジョニングプロファイル」を「自動」に変更した後、プロジェクトはビルドされ、コード署名エラーなしで実行されました。


0

githubまたは他のサードパーティのチュートリアルサイトからプロジェクトをダウンロードすると、これが発生することがあります。これらのアプリは通常、別のIDまたは会社/名前で署名されています。この場合、解決策を解決できない場合は、単に新しいxcodeプロジェクトを作成してくださいそして、すべてのヘッダーと実装ファイルを新しいプロジェクトにコピーします。フレームワークファイルなどの依存関係ファイルも忘れないでください。これは私にとってはうまくいきます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.