こんにちは!
Macで英字と日本語入力を切り替えるときに必ず1キーを押してしまうイシヤマです。癖というのは恐ろしいものですね。
今回はXcode8から9へアップグレードし、コマンドビルド(xcodebuild)を行なった時にエラーが発生してしまった場合の対処方法についてです。
iPhoneXが発表され、2:1という特殊解像度が増えたことでこれに対応するためにXcode9へのアップグレードが必要となった方も多いかと思います。
そんな風に今後も同じ環境を作る事がありそうなので、忘備録代わりも兼ねて対処方法を書いておこうと思います。
ビルドエラー内容
一言で言えばXcodeがプロビジョニングプロファイルを見つけられないというエラーです。
Xcode8の時は問題なくビルドできていたのに、Xcode9に変えた途端にエラーが出てしまった、というケースが該当します。そもそも、Xcode8でもビルドエラーになる場合は別の原因かと思います。
また、今回のエラーの特徴として、Xcode上でのビルドは成功しIPAファイルも出力することができることが上げられます。
ここでのビルドとは、XcodeのメニューからOrganizerを開いて行う方法を指しています。
実際にビルドを行ったときにコンソールに吐き出されるエラー内容はこんな内容です。
Error Domain=IDEProvisioningErrorDomain Code=9
“”App Name.app” requires a provisioning profile.”
UserInfo={NSLocalizedDescription=”App Name.app” requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the “provisioningProfiles” dictionary in your Export Options property list.}** EXPORT FAILED **
ここへ至るまでの処理は全て成功しているのですが、最後にIPAファイルを出力するときにプロビジョニングプロファイルが見つからず失敗となってしまっています。
解決方法
内容を見るとわかるかと思いますが、現時点では正式な対処というよりも回避的な方法となります。
詳細については継続調査中なので何かわかれば追加したいと思います。
どうも、Xcode9より前のExportOptions.plistは指定を簡略化していてもプロジェクトの設定に従い自動的に設定を反映してくれていたようなのですが、Xcode9からは具体的な指定を行わないと設定を参照してくれないようです。
これが原因で、今まで参照可能だったプロビジョニングプロファイルを見つけることができなくなりエラーが発生しているということですね。
では、具体的な指定とはどうすれば良いのか?
ここで、Xcode9上でビルドが成功していたことを思い出してください。
そのアウトプットの中に、ExportOptions.plistがあるのでその内容を頂いてしまいましょう。
何しろ、Xcode = Appleが作ったExportOptions.plistなのですから、間違っているはずがありません。
下記がその手順となります。
- Xcode9を起動しプロジェクトを開く
- Product → Archiveを選択
- Organizerが開くので指示に従いビルドを完了させる
- OrganizerのExportを行いIPAファイルを出力する
- 出力先に作られたExportOptions.plistを開く
- xcodebuildで使用しているExportOptions.plist(名前変えてる可能性あり)の仲間と比較する
- 差分を全て取り込みxcodebuildを実行
いかがでしょうか。
原因が同一であればこの方法でビルドが通るようになると思います。
ただし、対処の仕方がイマイチ根拠に欠けていることは否めないので、もう少し理論武装したいところです。
コメント
助かりました
archiveした際のExportOptions.plistを上書きして動かせました。