お仕事の都合で古いOSに対してもXCode Tools CLIを使ってビルドする必要があって調べてみても要領を得なかったんだけど少しわかった気がするので、わかったところまで整理してみます*1。
アプリとして実機やシミュレータにインストールできるファイルの種類について
| 説明 | |
|---|---|
| .app | xcrun simctl を経由して iPhone simulatorへインストールできる。 xcodebuild build コマンドやXCodeでシミュレータへ向けてビルドすることで作成可能 |
| .ipa | アプリストアへリリースしたり、実機へデプロイするときに作成する必要があるファイル形式。 .app や .xcarchive ファイルから開発者の証明書を何らかの形でアタッチするようなプロセスを経て作成 |
参考
- https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html
- https://qiita.com/HIkaruSato/items/a8d633d1b42c00b5722d
XCode7時代の .ipa 作成方法とXCode8時代の .ipa 作成方法
- XCodeが7の頃は
.ipa作成に関して.appファイルを渡せばxcrunのPackageApplicationがうまくやってくれていた - XCode8.3. で
PackageApplicationが廃止されてしまった- XCode8.3.2 を使う場合
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATHというメッセージが出るようになっている
- XCode8.3.2 を使う場合
- このため、
xcrun PackageApplicationの代わりにxcodebuild archiveを使う必要があるxcodebuildで.xcarchiveを作成した後、.ipaを作成する際にexportProvisioningProfileなどを自分で設定する必要がある- これの具体的なパス (SampleXXX的なノリなのではなく 'MyMobileApp Distribution Profile' みたいなのりでファイル名などが想像しにくい例が多い) がよくわからなくてつらい
参考
XCode 8.2 -> XCode 8.3 で Automatically manage signing が有効になっているプロジェクトにおいて .ipa へのエクスポートが失敗するように
- [試せていない]
exportOptions.plistのmethodの値がdevelopmentでない場合、XCodeでビルドしているときに、ログインしているアカウントがAdminでない場合、、証明書(開発者登録. キーチェーンに登録している) とProvisioning Profile(開発者とappIdに紐づいている) が揃っていても権限がたりなくて export に失敗する- [試せていない] CI用にadminにする?
- [試せていない]
xcodebuild -exportArchive -exportOptionsPlist /PATH/exportOptions.plistで指定するexportOptions.plistのmethodの値をdevelopmentにすればうまくいくかも?
<?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>development</string>
<key>teamID</key>
<string>GLPGBQ39X8</string>
</dict>
</plist>
参考
どうすればいいかわかったら今後追記しますが、詳しい人教えて欲しい感じです。
*1:上長許可あり