LoginSignup
3
4

More than 5 years have passed since last update.

Xcodeのバージョンがまた上がったことによるコードサインの諸問題

Posted at

いつの間にか、またMacのJenkinsでのUnity自動ビルドが失敗するようになりました…。

xcodebuild: error: invalid option '-exportProvisioningProfile'.

正確には、Xcodeビルド(アーカイブ)後のコードサインのためのxcodebuild -exportArchiveで失敗。どうやらいつの間にかXcodeのバージョンが8.3に上がっていて(誰がやったんだ…?)、ProvisioningProfileを指定する-exportProvisioningProfileオプションがなくなったようです。

試しに-exportProvisioningProfileを外すと、今度は

xcodebuild: error: The flag -exportOptionsPlist is required when specifying -exportArchive.

と言われます。となれば、ExportOptionsPlistを作って差し上げましょう。

プロパティリスト(.plist)は適当なテキストエディタでも作れるんですが、文字コードとかヘッダとかいろいろ細かい問題があると困るので、Xcodeで作ります。

Xcodeのメニューバーから"File->New->File..."で"Resource"の"Property List"を選択してください。あとは"Key"の+ボタンをクリックすると、項目が追加できます。

必要な項目(キー)は、

xcodebuild -help

をすると最後のほうに設定可能なキーのリストが出てきます。私の場合はアドホック用のビルドなので、

plist.png

Key Value メモ
method ad-hoc 他にapp-store,package等がある
teamID ********** いつもの10桁の英数字

のみ設定しました。ProvisioningProfileはteamIDとBundleIdから勝手に参照するようです(もしかしたらこれも不要かも?)。

最終的にコマンドラインで

xcodebuild -exportArchive -archivePath Hoge.xcarchive -exportPath Hoge.ipa -exportOptionsPlist Hoge.plist

とすると、コードサインが行われて.ipaファイルが生成されます。

…と思ったら、なんか以前(Xcode 8.2.1)と挙動が違う。以前と同じexportPathだと"Hoge.ipa/"というフォルダに.ipaファイルが書き出されてしまいます…。しかも、ipaファイルの名前は勝手にApplicationPropertiesのNameにされてしまうようです。

ということで、

xcodebuild -exportArchive -archivePath Hoge.xcarchive -exportPath . -exportOptionsPlist Hoge.plist
mv Unity-iPhone.ipa Hoge.ipa

の二段構えでなんとかなりました。Unity-iPhone.ipaの部分は環境に合わせて変更してください。.xcarchive内のinfo.plistを見て差し替えるという手もありますが、時間が無いのでこれで。

それにしても、iOSアプリ開発はXcodeがバージョンアップするたびに手法が変わって、追いつくのが大変…。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4