iOSアプリをxcodebuildでビルドする(途中)
Appiumの前段階として、Simulatorなどにインストールするビルド済みのAppファイル*1*2が必要です。
メモ
そういうわけで、ターミナルから xcodebuild
を使って Appファイル
の作成を試します。
$ xcodebuild xcodebuild: error: The directory /Users/woshidan/path/ios-project/root/ does not contain an Xcode project. $ cd path/to/XcodeProject $ ls TestApp TestApp.xcodeproj TestAppUITests build
まずは、 XCodeで作成したプロジェクトのあるところ( .xcodeproj
ファイルのあるディレクトリ ) へ移動します。
依存しているライブラリのクラスのヘッダが見つからない ...
xcworkspace など依存ライブラリの設定が入ったファイルを、 -workspace
で指定しましょう。その際、 schema
も指定が必要です。
// # CocoaPodsを使っていてxcworkspaceを指定してビルドする $ xcodebuild -workspace ../../Test/TestLib.xcworkspace -scheme TestApp
CompileStoryboard TestApp/Base.lproj/Main.storyboard というメッセージが出てStoryBoardがビルドできない
Xcode
のバージョンによっては、特定の設定がないとビルドができないものがあります。そう、古い設定は新しいXCodeのバージョンが出るたびにビルドできなくなる可能性があるのです*3。
というわけでそういう場合は、xcodebuildで利用するXCodeのパスを古いものに xcode-select
で切り替えます。
# xcode-select -s /Applications/__oldXcode.app/Contents/Developer
シミュレータでビルドしてもらうよう指定する
-sdk iphonesimulator
オプションを追加してビルドします。
$ xcodebuild -workspace ../../Test/TestLib.xcworkspace -scheme TestApp -sdk iphonesimulator
のはずなんですが、めっちゃいっぱい ❌ /Applications/__oldXcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/include/sys/_types.h:76:9: unknown type name '__uint32_t'; did you mean '__uint128_t'?
が出てつらいんで解決したらまたなんか書こう...。
*1:.appファイルはXCodeでビルドが完了すると $(PROJECT_DIR)/build/Release-iphoneos/xxxxx.app のようなパスに作成され、これを Payload フォルダに入れて圧縮 -> 拡張子を変更したものが .ipa ファイル https://developer.apple.com/jp/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html http://lain.heavy.jp/lain/2012/01/13/462 参照
*2:appiumのcapsファイルに指定するファイルは .ipa でも .app でもよさそう...?
*3:若干、いいすぎですが、メジャーバージョンが2~3離れたりしたら厳しい