The key UIRequiredDeviceCapabilities in the Info.plist may not contain values… エラーが出て困ったので対応した

2022.03.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アプリのバグを修正した後にApp Store Connectにアップロードする為、アーカイブ後にValidate Appを実行したところ身に覚えのないエラーが出てValidateが却下されたので対応した話です。

ちなみにこちらのアプリです。

目だけで操作するタイピングゲームアプリをリリースしてみた

環境

  • Xcode 13.3

表示されたエラー内容

This bundle is invalid. The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions. Refer to QA1623 for additional information: https://developer.apple.com/library/ios/#qa/qa1623/_index.html

日本語に訳してみると、

このバンドルは無効です。 Info.plistのキー UIRequiredDeviceCapabilitiesには、以前のバージョンでサポートされていたデバイスがこのアプリケーションを実行できないようにする値が含まれている可能性があります。追加情報については、QA1623を参照してください。

添付されたリンクを確認

QA1623を参照してください。のリンクを確認したら、下記のQ&Aがありました。

Q:アプリのアップデートをアップロードすると、以前のデバイスのサポートについてエラーが発生するのはなぜですか?

A: iTunes Connectでは、現在App Storeにあるアプリのバージョンよりも少ないデバイスでアップデートが実行されている場合、アプリのアップデートバージョンをアップロードすることはできません。これは仕様によるものです。

アプリのアップデートは、すでにアプリを購入し、現在のバージョンのiOSを実行しているすべての顧客に対して機能する必要があります。

要するに、以前のバージョンで使えてた人が使えなくなるようになってしまっているらしい。

※ただし、DeploymentTargetの最小バージョンを上げて、そのバージョンのiOSを実行できないデバイスのサポートが終了するのは問題ない。

※ドキュメントが古い為、iTunes Connect等の記載がありますがそのまま翻訳しています。

と言われても

今回、バグ修正で内部コードには触れたが、Info.plistやその他既存ユーザーがアプリを使えなくなってしまうような変更を加えていなかった。

UIRequiredDeviceCapabilities

今回のキーマンとなるUIRequiredDeviceCapabilitiesを初期リリース時から使用していました。

このアプリは主要な部分を機能させる為にARKitが必要であった為、ARKitをサポートするデバイスでのみ利用できるようにInfo.plistUIRequiredDeviceCapabilitiesのキーにARKitを記述していました。

解決方法

UIRequiredDeviceCapabilitiesをキーごと消すと解決する。

調べてみると、この解決方法が出てきたので試してみました。

消してApp Store ConnectにアップロードできたとしてもUIRequiredDeviceCapabilitiesARKitが記述されていないことを指摘されて審査で却下されたらどうするのだろうか、、という想いでしたが何事もなく審査を通過しました。

おわりに

ARKit対応デバイスではない場合は、ARFaceTrackingConfiguration.isSupportedのフラグをチェックし、falseの場合はアプリを使用できないことを伝えているのでいいのですが、一体何だったんだろう、、

とりあえず、リリースできてひと安心。

この記事が今回の謎のエラーに遭遇した方の救いになればと思います。

参考