また挙動が変わった…
Xcodeがバージョンアップするたびに悩まされている気がするんですが、iPhone Xに対応するのにXcode 9に更新したところ、ローカルでビルドして転送する分には問題ないものの、AdHoc用にコードサインするとProvisioningProfileが埋め込まれなくなってしまい、ちょっと困りました。
正直、何か効いてうまく行くようになったのかよく分からないんですが、どういう引数でコマンドを呼んでいるのかを書いておきますので、同じ問題にぶち当たった方は比較して参考にしてくださいませ。
xcodebuild -target Unity-iPhone -configuration Debug -scheme Unity-iPhone -archivePath HogeApp.xcarchive archive CODE_SIGNING_ALLOWED=NO ENABLE_BITCODE=NO
xcodebuild -exportArchive -archivePath HogeApp.xcarchive -exportPath . -exportOptionsPlist HogeApp_ExportOptions.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>ad-hoc</string>
<key>teamID</key>
<string>**********</string>
<key>provisioningProfiles</key>
<dict>
<key>com.hoge.hogeapp</key>
<string>HogeApp_Dev</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
</dict>
</plist>
考察
plistのprovisioningProfiles以下を指定していなかった(manualにしてなかった)のが原因だと思うんですが、Xcode8ではそもそも指定しなくても動いてたところが謎です。"Automatically manage signing"はXcode8から導入されたはずなんですが、Xcode9からさらに挙動が変わったりしたんですかね?
で、provisioningProfilesのkeyはBundleIdでいいとして、stringがよく分からない。実は自分は取引先からmobileprovisionファイルを受け取って埋め込んでいるだけなので、Develperサイトで証明書の詳細を調べることもできず、ここが最下層プログラマの辛いところであります…。ただ、ProvisionQLで上部に表示される名前がどうもそれっぽいので採用(当たり)。
あと、CODE_SIGNING_ALLOWED=NO と ENABLE_BITCODE=NO はいらないような気もするのだけど、暇なときに要調査。
最後に
追求しきれてないのに記事にするのも申し訳ないのですが、問題解決のヒントになりましたらということで…。
ご参考
ProvisionQL
https://github.com/ealeksandrov/ProvisionQL
mobileprovisionの中身を表示するQuickLookプラグイン。デバイス数がアイコンとして表示されたりもするので便利。ipaファイルに埋め込まれているmobileprovisionも表示できて、mobileprovisionが入り乱れる環境には超おすすめです。