Xcodeで証明書のエラー “Provisioning profile failed qualification” が発生した時のベストな対処法とは
昨日、”Xcode“で自作のiOSアプリを実機テスト (Run)とかアップルの審査のためにアップロード (Archive)しようとしたら、
“Provisioning profile failed qualification”
“Profile doesn’t match the entitlements file’s values for the application-identifier and keychain-access-groups entitlements.”
“This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.”
といった証明書に関連するエラーが発生し、数時間を無駄にしてしまったので、自分自身のためにも備忘録的にTALKしておきます。
証明書関連のエラーって、忘れた頃に突然発生するので、過去にも何度か同じような経験をしているのですが、喉元過ぎれば熱さを忘れる的に、次回遭遇した時には一からネットで調べるといった非生産的なことをやってきました。そんなわけで、今回は二度と同じ轍を踏むことのないよう、しっかりメモって置くとこにしました。
そもそも、この手の証明書関連のエラーって、ディベロッパーのミスが原因ではありません。これまでのことを思い出してみると、”Xcode”や”iOS”のバージョンアップ、あるいは別のマシンでデバッグをしようとした時に起きる現象ではないかと思っています。今回も、”iOS”のバージョンアップに伴い、”Xcode”も同時にバージョンアップしたタイミングでした。”Xcode”は”iOS”のバージョンに追随しているので、一度にアップデートすることが多いです。
ネットで検索すると、一番多くヒットする解決策として、”Xcode”の”TARGET”画面の”Signing & Capabilities”で、”iColud”を一度有効にした後に無効にする、という内容が登場します。
でも、それをやってしまうと、プロジェクトに不必要な”entitlement”ファイルが作成されてしまいます。しかも、”entitlement”ファイルを削除すると、更に追い撃ちをかけるように別のエラーが発生してしまいます。
もし、この解決策に釣られて、かつ”entitlement”ファイルを削除してしまった場合は、”Xcode”の”TARGET”画面の”Build Settings”にある”Signing”欄で、”Code Signing Identity”を空欄にすれば、”entitlement”ファイル絡みのエラーは解消されるはずです。
では、どうすれば良いのか?
“ライブラリ”フォルダにある”MobileDevice” – “Provisioning Profiles”に保存されているプロファイルを思い切って全削除します。勿論、万が一のことを考えて、削除する前に別の場所にバックアップしておいて下さい。
続いて、”Xcode”の”TARGET”画面の”Signing & Capabilities”で、”Automatically manage signing”項目をオフ・オンします。一旦オフすると、”Team”が空白になってしまうので、メニューで元のチーム面を設定して下さい。
これで、証明書に関連したエラーが解消すると思います。個人的には、2個のiOSアプリを対象に、この方法を実行したところエラーが解消しましたので、トラブルシューティングできる可能性は高いのではないかと思います。
このTALKが皆さんの参考にあれば幸いです。
p.s>
こうやって整理してみると、iOSアプリの実機テスト (Run)する時に発生する認証エラーも、実機にインストール済みのiOSアプリを削除するのではなくて、プロファイルを削除すれば回復するのかもしれないと思いました。トラブル時には、事の前後を考えずにいろいろ試すあまり、どの方法がベストだったのか分からなくなっちゃいますよね。ネット検索しながら、闇雲に対応するのではなく、経験も活かしつつ、もう少し冷静に考えてみれば、意外に事はシンプルなのかもしれませんね。次に同じエラーに遭遇した際は、手始めにプロファイルの削除からやってみることにしようと思います。
p.s>
証明書の存在意義は理解できる一方で、”Xcode”でアプリを開発する際、一番厄介なのが、やはり証明書ですよね。そもそも、証明書の仕組みや構造を知らないディベロッパーに、こういったエラーに対処せよというのには無理があります。そろそろ、こういった部分にも改善を加えて、ディベロッパーが安心して開発に専念できるようにしてほしいものです。
p.s>
ネット検索で得られる技術情報って、時が経つとともに有害な情報に変化してしまうことが多いのでは?と最近感じています。Google検索で、技術情報のフィルタリングをしてくれると有り難いんですけどね。例えば、役に立たなかった時に、Googleに報告すると、検索でヒットしづらくなるとかね。
p.s>
いずれにしても、アプリ開発中にどのようなエラーに遭遇するか分からないので、実機に保存しているユーザデータは定期的にバックアップしておいた方が良さそうですね。(“これを知っていると困った時に役に立つTips XcodeによるiOSアプリ開発編“)
|
|
|
ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。