注:私はXamarinを使用して開発しています。 Xamarinフォーラムに投稿された同様の質問 here
たとえば、CompanyAppというアプリを作成しています。次に、それに対応するアプリIDcom.Company.CompanyAppと、対応するアプリIDを使用する配布プロビジョニングプロファイルを作成しました。バイナリをアップロードしたところ、問題なく動作しました。
その後、アプリのデモ版を作成しました(基本的には小さな変更を加えた同じアプリなので、同じソリューションとプロジェクトであり、異なるバンドル署名設定です)、CompanyAppDemo新しいアプリIDcom.Company.CompanyAppDemo、および新しいアプリIDを使用する新しい配布プロビジョニングプロファイル。 iOSバンドルの署名オプションを更新して、新しいプロビジョニングプロファイルを使用し、IPAを生成しました。しかし、これをApplication Loaderにアップロードすると、次のエラーが発生しました。
[2015-01-23 16:08:21 SGT]エラー:エラーITMS-90164:「無効なコード署名資格。アプリバンドルの署名の資格は、プロビジョニングプロファイルに含まれる資格と一致しません。プロビジョニングに従ってプロファイルでは、バンドルには許可されていないキー値が含まれています。「Payload/CompanyApp.app/CompanyApp」のキー「application-identifier」の「TEAMID.com.Company.CompanyApp」
[2015-01-23 16:08:21 SGT]エラー:エラーITMS-90046: "無効なコード署名資格。アプリケーションバンドルの署名に、iOSでサポートされていないコード署名資格が含まれています。具体的には、値 'TEAMID.com.Company 'Payload/CompanyApp.app/CompanyApp'のキー 'application-identifier'の.CompanyApp 'はサポートされていません。この値は、TEAMIDで始まり、ドット'。 'が続き、その後にバンドルIDが続く文字列でなければなりません。 "
私は何日もデバッグしていませんでした。
新しいプロファイルで署名したときに、Application Loaderがスローしたエラーが元のIDTEAMID.com.Company.CompanyAppを参照する理由を疑問に思っていますの代わりにTEAMID.com.Company.CompanyAppDemo?これは、間違ったプロビジョニングプロファイルを選択するXamarinのバグですか、それとも何か不足していますか?アプリごとに異なる証明書は必要ありませんか?
XamarinのiOS Build Signingオプションを変更する前に、XCode> PreferenceのProvisioning Profileリストを常に更新していることに注意してください。
髪を引っ張ってから2週間後。
何らかの理由で、TEAMID.com.Company.CompanyAppDemoに設定されたEntitlements.plistにキー 'application-identifier'がない場合、Xamarinは元のapplication-identifierを使用します、つまり- TEAMID.com.Company.CompanyApp
したがって、解決策は、Entitlements.plist内に正しいアプリケーションバンドルIDを指定するapplication-identifierを追加することでした。次に、ビルドオプション> iOSバンドル署名にplistを含めます。
私は同じ問題を抱えていて、単純な製品->クリーンで解決しました。
エラーITMS-90164とエラーITMS-90046の両方をget-task- allowおよびasp-environmentキー:
David Pが言ったように、新しいアーカイブが私の問題を解決する前にProduct-> Clean.
私の場合、追加したいのは、障害のあるxarchiveに次のファイルがないことです。
その.xarchiveを本番署名のためにクライアントに送信する前に、archived-expanded-entitlements.xcentファイルを探して、そこにあることを確認したい場合があります。
同じ問題を簡単な製品->クリーンで解決しました。
Entitlements.plistでこれを変更します。
<key>aps-environment</key>
<string>development</string>
これに:
<key>aps-environment</key>
<string>production</string>
これは、iTunes Connectの新しい契約に同意する必要がある場合にも発生します。 iTunes Connectにログインすると、最新の契約変更に同意するように促すバナーが上部に表示されます。
パックする前に対応するリリース証明書を選択しないと、エラーITMS-90164が報告されます
ビルド設定->コード署名ID->リリース->任意IOS SDK
アーカイブするときは、WatchKitアプリではなくAppターゲットを選択したことを確認してください。
他の答えはどれも私のためにこのエラーを解決しませんでしたが、これはしました:
新しいXCodeアプリケーションを作成し、コード署名設定を調べます。
アプリをデフォルトのXCode 7またはXcode 8の署名およびプロビジョニング設定と同様に設定してみてください。XCode7はここに示されていますが、XCode 8で再び変更されています。
2つのターゲット(2つの開発者ID、2つの資格)を含むプロジェクトがこれにつながる可能性があります。 (それがどのように起こったのか聞かないでください...)
アーカイブするとき、別の資格ファイルを一時的に削除します。
マスターではないgitブランチからビルドをアップロードしようとしました。この問題を解決するために、ブランチをマスターにマージして再構築しました。その後、ビルドを正常にアップロードできました。
Entitlements.plistで、Accessドメインの値をapplinks:htts://domain.app.linkからapplinks:domain.app.linkに変更しました。これは魅力のように機能します。乾杯!
ここにリストされているすべてを試してみましたが、問題は私の.entitlement
ファイルであり、そもそも入れなかった行が何とか追加されただけでした。
これらの行を削除して、もう一度試してみました。
適切なXcode 'Quit'を実行してから再起動することが、それを機能させる最後のアクションでした。
(デモ版の)バンドル識別子を変更し、アーカイブされたビルドを検証するときに同じ質問(質問で詳述)を受け取りました。 Xcodeを使用しています。 Xcodeを閉じてプロジェクトを再度開くだけでは十分ではありませんでしたが、完全な「終了」で十分でした。おそらく私が推測している場所に何かがキャッシュされていた。
何時間も調査した後、簡単な解決策を見つけました。
アプリケーションローダーを使用してアプリケーションをアップロードする代わりに、XCodeのオーガナイザーを使用しましたが、アップロード時に警告なしで機能しました。
私の問題は、間違ったバンドルを使用してIPAファイルを作成していたことです
ここに私の2セント。
たった今、この問題に巻き込まれたのは、Apple開発者ポータルからTeamID /アプリケーションIDをコピーすると、entitlement.plistに多くの無関係な値がもたらされるためです。 Xcodeを使用してentitlement.plistを編集しており、最初の改行文字以降は入力ボックスにすべてが表示されないため、これに気付きませんでした。
この場合、entitlement.plistにプレーンテキストエディターを使用することをお勧めします。
ありがとう、サミュエル
Build Phase
に移動します万歳、あなたはそれで完了です。問題が解決しました
私にとって、iOS Bundle SigningのCustom Entitlements設定に間違ったファイルがありました。それを削除し、動作しました!
資格を確認する必要があります。 plistファイルのようなものです。開発用に編集し、余分なフィールドを削除します。