ぴよログ

↓に移転したのでこっちは更新されません、多分。

xcodebuildまとめ

移転しました →

先日xctoolについて書きました。

(少し追記)Xcodeのプロジェクトをコマンドラインからビルド・テストする - PILOG(少し追記)Xcodeのプロジェクトをコマンドラインからビルド・テストする - PILOG

ところが、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で自動化する - PILOGipa書き出しをxcodebuildとxcrunで自動化する - PILOG

先ほど紹介した方法でarchiveを作り、カレントディレクトリのarchive.xcarchiveアーカイブがあるとします。

$ xcrun -sdk iphoneos \
PackageApplication archive.xcarchive/Products/Applications/MyApp.app \
-o MyApp.ipa \
-embed "${PROVISIONING_PATH}"

PROVISIONING_PATHについてはリンクを参考にしてください。