web-dev-qa-db-ja.com

アップグレードのアプリケーション識別子資格文字列がインストールされているアプリケーションと一致しません->アップグレードを拒否しています

現在約3年前のiOSアプリがあります。エンタープライズプロファイルで署名されています。ソフトウェアの7つのバージョンをリリースしました。前回はほぼ1年前です。現在、新しいリリースを試みていますが、iOS8の新しいセキュリティルールにより、iOS 8.1.3以降のデバイスはアップグレードできず、削除して再インストールする必要があることがわかりました。

調査したところ、別のプロファイルでアプリに署名している人たちにも同様の問題が見つかりましたが、私たちのアプリは同じプロファイルで署名されています。このエラーは、以前のアプリケーションIDにワイルドカードが含まれていたことを示しています。これは、バンドルIDを変更したことがないため、わかりません(ただし、開発者ポータルでは、すべてのアプリの一般的なappIdはcom.company。*です)。

Xcode 6.4を使用してバージョン1とバージョン2の両方のアプリをビルドすると正常にアップグレードでき、Xcode 5.1を使用してアプリの両方のバージョンをビルドすると正常にアップグレードできることがわかりました。問題は、 Xcode 5.1でビルドされたバージョンよりもXcode 6.4でビルドされたアプリ

アップグレードを試みたときに発生するエラーは次のとおりです。

"アップグレードのアプリケーション識別子資格文字列(6Q39SSX4QT.com.company.appName)が、インストールされているアプリケーションのアプリケーション識別子文字列(6Q39SSX4QT.com.company。*)と一致しません)"

アプリにentitlements.plistファイルを含める必要があることへの言及をいくつか見ましたが、AppName.entitlements plistファイルがありますが、どのアプリにもentitlements.plistファイルがありません(他のアプリではこの問題は発生しませんが、 Xcode 5.1のリリース以降、何度もアップグレードされています)。

誰かアイデアはありますか?

ありがとう!

13
drew2dev
  1. Xcodeを開く->ウィンドウ->デバイス
  2. デバイスをクリックして、インストールしようとしているアプリをインストール済みアプリのリストから削除します。
  3. 今すぐ実行してみてください。
17
UIResponder

さらに読んだ後、私は この答え が役立つことを発見しました。私の場合、私はgruntスクリプトを介してビルドしているので、codesignステップの間に資格を挿入するように、archive/sign/packageステップを変更できます。

リンクした手順に従う場合は、次に示すように、entitlements.plistファイルにワイルドカードが含まれていることを確認してください。

<key>application-identifier</key>
<string>com.company.*</string>

アプリのパッケージ化を手動で行っている場合は、 iResign を確認することをお勧めします。これにより、entitlements.plistファイルが作成され、アプリの署名時に挿入されます。

Appleから入手できるより良いドキュメントがあったらいいのに。ターゲットのコード資格設定で何を指定しても、XCodeで同じ効果を得ることができません。

2
zcMACK

このエラーが発生しました-アプリの署名に使用する開発チームを変更したためです。つまり、会社の配布プロファイルを使用して開発バージョンに署名し、クライアントの配布プロファイルを使用してリリースバージョンに署名しました。

エンタイトルメントのチームIDが正しいチームID(エラーメッセージに出力されている)であることを確認してください。次に、インストールされているアプリが間違っています。また、資格ファイルでアプリケーション識別子を指定していないことを確認してください。資格ファイルがまったくありませんでした。

この場合は、デバイス上のアプリを削除して、新しく再インストールするだけです。

クリス

0
chrisoneiota