先日xctoolについて書きました。
(少し追記)Xcodeのプロジェクトをコマンドラインからビルド・テストする - ぴよログ
ところが、xcodebuildそのもの自体もいい感じになってきていてxctoolとの違いはなくなって来ているようです。Xcodeのコマンドラインビルドのジャンルは最近追い始めたので情報が整理しきれていないので間違っていたらすいません。
xctoolを使うメリットはというと、このあたりはあるのかな。
- 出力フォーマットを変えられる
- テストの並列実行が可能
そういうわけでxcodebuildについて個人的にまとめておこうと思います。
ビルド
$ xcodebuild -project MyProject.xcodeproj -scheme MyScheme
# または
$ xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme
基本は-project
でプロジェクト、または-workspace
でワークスペースを指定します。またビルドスキームも指定します。とりあえずこれでビルドが動きます。
そのほか、コンフィギュレーションやSDKの指定なども可。
$ xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme \
-configuration Release \ # Debugなど
-sdk iphoneos \ # iphonesimulator7.0など
テスト
基本はあまり変わりませんが、-destination(配置先)
でシミュレータを指定しておくと間違いないっぽいです。
$ xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme \
-destination 'platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.1' \ # 必要に応じて変更
test
アーカイブ
これも基本は一緒。-sdk
は自動的にiphoneos
となりますが、明示的にiphonesimulator
を指定すると失敗します。
また-archivePath
オプションで出力ファイルのパスを指定できます。一見出力ディレクトリぽいのですが、ちょっと挙動がおかしい感じです。-archivePath ~/Desktop
という指定で~/Desktop.xcarchive
ができました。謎。.
指定によりカレントディレクトリの上のディレクトリにxcarchiveができました。
$ xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme \
-sdk iphoneos \
-configuration Release \
archive -archivePath archive
アーカイブからipaの作成
こちらでも触れたとおりipaもコマンドから作ることができます。
ipa書き出しをxcodebuildとxcrunで自動化する - ぴよログ
先ほど紹介した方法でarchiveを作り、カレントディレクトリのarchive.xcarchive
にアーカイブがあるとします。
$ xcrun -sdk iphoneos \
PackageApplication archive.xcarchive/Products/Applications/MyApp.app \
-o MyApp.ipa \
-embed "${PROVISIONING_PATH}"
PROVISIONING_PATHについてはリンクを参考にしてください。