先日、Xcode8にて実機インストールが突然できなくなるという事態に陥りました。いろいろやって結果的には解決しましたので同じような現象で困っている人の参考になれば幸いです。
事の発端はMacの調子が悪いのでクリーンインストールしてXcodeを再度インストールしたために起こりました。
ちなみに私はTime Machineなどのバックアップ系のアプリケーションは使いません。理由は二つあり、可能な限りMacを購入した状態に戻したいというのと、不具合などが万が一あって戻せなくなった場合を考えてです。
手間はかかりますが、自分でバックアップを取って手動で戻せば確実にMacを初期化でき、ファイルやデータも元に戻せます。さらに念のためにバックアップもUSBとクラウドスレトージといったように二重にバックアップしておきます。
突然エラーが発生
Macのインストールが終わり、Xcodeの設定です。Gitからプロジェクトをクローン、証明書をキーチェーンアクセスに登録、プロビジョニングファイルをXcodeに設定などの手順をひととおり済ませ、ビルドも成功。その後、iPadでアプリを実行させようとすると
A valid provisioning profile for this executable was not found.
なるエラーが発生。
直訳すると、「有効なプロビショニングファイルが見つからないので実行できません」でしょうか?
今までもクリーンインストール後には度々動かなくなっていたので”またか・・・”という感じで次の原因を疑いました。
①Schemeが間違っている。
②証明書が間違っている。
③プロビジョニングファイルが間違っている。
しかしこれらを確認しても全部あってる・・・。ちなみにクリーンインストール前までは正常に動いていました。
よくあるDebugとReleaseを間違っていたなんてこともない。
うーん、分からん・・・。ここでGoogle先生に頼ってみる。
プロビジョニングファイルがiPadにインストールできない
以下の記事を見つけ、iPadにプロビジョニングファイルがインストールされていないことを疑い、調べてみると確かに入っていない。
App installation failed / A valid provisioning profile for this executable was not found.
これで大丈夫だなと安心して、iPadに該当のプロビジョニングファイルをインストールしようと試みるがなぜかできない。しかもエラーも発生せず、表向きにはうまくいったように見える。
インストールの方法としては、Xcode->Window->DevicesでiPadのところで右クリック、Show Provisioning Profiles...をクリックでプロビジョニングファイルの一覧が表示される。+をクリックしてインストールするプロビジョニングファイルを選択です。
さらにこのアプリ、StandardとEnterpriseの二つのライセンスで運用していて、動かなくなったのはStandardの方でした。なのでEnterpriseの方でも試してみました。すると問題なく動いたのでやはりプロビジョニングや証明書関連でうまく噛み合ってないことが原因かという方向に。
Xcode8に追加されたautomatically manages signing
ここまでくるとさすがに焦ってきて何が原因かを真剣に考えはじめました。
そして念のためXcode8での変更点を確認したところで解決策にたどり着きました。というのもXcode8にて追加された「automatically manages signing」の機能を適用すると呆気なくiPadにインストールできました。
automatically manages signingにただチェックを入れるだけ・・・。
唯一言い訳をすると、クリーンインストールする前からXcodeのバージョンは8でした(笑
ちゃんとドキュメント読んでない自分が悪いのでぐうの音も出ませんが、いきなり変えるんだなやっぱり。
しかしEnterpriseはなぜそのままで動くのかが謎。StandardとEnterpriseではautomatically manages signingの振る舞いも変わってくるのだろうか。