web-dev-qa-db-ja.com

署名者が無効なエラー

アプリのアドホックビルドを作成しましたが、他の人にインストールしてもらいたいです。プロビジョニングプロファイルにデバイスID(実際には2つ)があります。私の証明書は、アドホックプロビジョニングとアプリストアプロビジョニングで同じです。証明書はキーチェーンで有効です。このビルドでは、配布証明書にリンクされているXcodeのアドホックプロファイルを選択しました。

ユーザーにプロビジョニングファイルと.appファイルを送信します。彼らは両方をiTunesにドロップして同期し、両方のデバイスでこのエラーを受け取ります。

The application "myapp" was not installed on the iPhone "user's iPhone" because the signer is not valid.

IPhoneからすべてのプロファイルを削除し、上記の2つのファイルをiTunesにドロップし、同期してアプリを正常にインストールしました。私はそれを私のために再現させることができません。問題を理解するには、この問題をローカルで再現する必要があります。それをどのように行うことができるかについてのアイデアはありますか?

15
4thSpace

エンタイトルメントを追加しましたか?プロジェクトレベルではなく、ターゲットレベルで署名を配置しますか?アドホックプロファイルを選択しますか?ビルドの前にクリーンアップを行いますか?ビルドのアドホックデバイスを選択しますか?

最善の策は、Appleのドキュメントに従うことです正確に、ビルド設定を正確に Appleのものと一致させます。

16
zaph

.appファイルにバンドルされているimbedded.mobileprovisionファイルをチェックして、UIDがそこにあることを確認することをお勧めします。次の手順を実行してください。

  1. problemApp.ipaを解凍します
  2. cdペイロード/ProblemApp.app
  3. pico imbedded.mobileprovision

このファイル内でデバイスのUIDを探します。そこにない場合は、ポータル内のプロビジョニングファイルに追加されていない可能性があります。

6
cipherz

ドキュメントから:

アドホック配布用のアプリの作成は、2つの追加手順を除いて、AppStore配布用のアプリの作成と似ています。まず、アドホック配布プロビジョニングプロファイルを作成し、iPhone Developer Program ProvisioningPortalを使用して配布するiOSデバイスのUDIDを追加する必要があります。次に、コード署名エンタイトルメントファイルを作成する必要があります。エンタイトルメントファイルを作成する方法については、iOS開発ガイドの「アプリケーションエンタイトルメントの管理」セクションを参照してください。


アプリケーション資格の管理

iOSは、資格と呼ばれるプロパティを介して、アプリケーションをデバッグできるかどうかなど、特別なリソースと機能へのアクセスを提供します。アプリケーションでエンタイトルメント情報を指定するには、エンタイトルメント定義(キーと値のペア)を含むエンタイトルメントプロパティリストファイルをプロジェクトに追加します。アプリケーションをビルドすると、Xcodeはファイルを生成されたアプリケーションバンドルにコピーします。

エンタイトルメントプロパティリストファイルをプロジェクトに追加するには:

[グループとファイル]リストで、[リソース]グループを選択します。 [ファイル]> [新しいファイル]を選択します。 iOS>コード署名>資格テンプレートを選択します。ファイルにEntitlements.plistという名前を付けます。 (任意の名前を使用できます。このセクションで後述するように、コード署名エンタイトルメントビルド設定の値と一致することを確認してください。)プロパティリストファイルのタイプをiPhoneエンタイトルメントに設定します。テキストエディタでファイルを選択した状態で、[表示]> [プロパティリストタイプ]> [iPhoneエンタイトルメント] plistを選択します。

資格エントリをファイルに追加します。エンタイトルメントプロパティごとに、以下を定義する必要があります。

選択した行の右側にある[子の追加]または[兄弟の追加]ボタンをクリックします。 [子の追加]ボタンには階層を表す3本の線があり、[兄弟の追加]ボタンにはプラス(+)記号が付いています。表示されるポップアップメニューからentitlementプロパティを選択します。追加する必要のあるエンタイトルメントがメニューに表示されない場合は、[表示]> [プロパティリストタイプ]> [ファイルタイプのデフォルト]を選択します。次に、資格キーの名前とタイプを入力します。

プロパティの値を入力します。ターゲットのコード署名エンタイトルメントビルド設定を、新しく追加されたエンタイトルメントプロパティリストファイルの名前に設定します。


エンタイトルメントファイルを作成し、それをコード署名エンタイトルメントビルド設定に追加したら、エンタイトルメントファイルを開き、get-task-allowキーを追加または編集して、falseに設定します。

.appバンドルを圧縮してアドホックビルドをテスターなどに配布することに加えて、特定の電子メールクライアントとサーバーがプロビジョニングプロファイルを破損する可能性があるため、配布する前にプロビジョニングプロファイルも圧縮することをお勧めします。

アドホック配布の詳細については、iOS開発ガイドの「テスト用アプリケーションの公開」セクションをお読みください。

4
daidai

最近、最近のビルドで1人のテスターがこの問題に遭遇しました。テスターがiPodTouchをリセットし、その過程でプロビジョニングプロファイルを削除したことが判明しました。

考慮すべきことだけです。

3
jstr

このエラーは、他の誰よりも面倒なことをしたときに発生しました。プロファイルに新しいデバイスを追加しましたが、更新されたバージョンをダウンロードしてXcodeに追加し、プロジェクトでそれを指すのを忘れました。正しく設定すると、テスターはアプリを正常にインストールできました。

2
Josh Justice

OPと同じ問題があったのでここに到着しました。 XCodeオーガナイザーで更新を使用したと確信しているにもかかわらず、エンタイトルメントファイルにUDIDが含まれていないことが実際に判明しました。別の更新では違いはありませんでした。

最後に、すべてのプロビジョニングプロファイルを削除し、その後更新しました。物事は今うまくいきます。

これが私のセットアップの不具合なのか、オペレーターのエラーなのかわかりません。ただし、他の誰かがこの状況に陥った場合に備えて、プロビジョニングプロファイルを削除してから、更新することで料金が発生する場合があります。

1
Jack Jansen

もう1つの楽しいものがあります.... iphoneとipadに別々のエンタイトルメントファイルがある場合は、特定のビルドごとにファイルのターゲットを設定してください...そうでない場合、ビルドに表示されず、これを取得しますエラー

1
lorfds

同じ問題が2回発生しました(xcode 4.2 ios 5

1回目、アーキテクチャにarmv6を追加するのを忘れたとき

2番目に、同じ開発者IDを持つ多くのプロビジョニングファイルを作成したときに、バンドル識別子の使用に応じて他のキーチェーンを削除する必要があります...そして誤って有効なものを削除し、他のケチェーンを使用しました

0
shyla

私もOPと同じ問題を抱えていました。ばかげた間違い:デバイスとして登録したときに、アドホック配布しようとしていたデバイスから誤って最後の2桁を削除しました。

0
beernik

これは、iphone3Gが実行されている場合は機能しませんIOS 3.1.3。設定->一般(プロファイルがありませんでした)を見て、配布プロファイルが電話にないことを確認しましたリストされているオプション)。

次に、iphoneconfigユーティリティをインストールしました。

http://support.Apple.com/kb/DL851

次に:

  1. iphoneconfigを実行します
  2. embedded.mobileprovisionファイルをアプリにドラッグアンドドロップします
  3. 左側のデバイスをクリックします
  4. 「プロビジョニングプロファイル」タブをクリックします
  5. プロファイルをクリックしてから、「インストール」ボタンをクリックします

その後、アプリは問題なくインストールされました。

0
drfence