iOS の実機にアプリをコマンドラインからインストールする
iOS の実機にアプリをインストールする時、Organizer(Xcode) を使うのが普通です。 ですが、自動化等しようとすると、iOS 実機へのコマンドラインからのインストールが必須です。
そこで、fruitstrap というツールを使います。 https://github.com/ghughes/fruitstrap
※"This project is no longer maintained." となっているので、注意が必要です。今現在使用出来る事を確認できています。ただ、他に方法がないので、今はこれしかないです。
(2013/07/16: 追記 他のツールを教えて頂きました。下に追記してあります。)
ただ、日本語環境だと途中で失敗するので、fork して直しました。 https://github.com/seamountain/fruitstrap
修正点
言語設定によって発生するエラー
- CFStringGetSystemEncoding() を kCFStringEncodingMacRoman に書き換えました
システムの言語設定を日本語にしていると、上記リンクの fruitstrap だと途中でエラーになります。(英語にしていると問題ありません)
以下のブログでも述べられています。 http://www.zero4racer.com/blog/709
失敗した時にエラーコードしか表示されない
- 自分で行なっていた時の出やすいエラーコードの時は、エラーメッセージを出すようにしました。
アプリの codesign がうまくいっていない状態で実行しても途中で落ちますが、エラーコードのみ表示されるのでよくわかりませんでした。
以下のサイトの "Known Error Codes" の章が役に立ちます。 http://theiphonewiki.com/wiki/MobileDevice_Library
この中に、今回はまったエラーコードがなかったので、エラーメッセージとして追加しました。
(そもそもエラーコードだけではなく何のエラーなのか出ると良いのですが…)
使い方
fruitstrap は以下のコマンドでビルドしたあとに、
make fruitstrap
このコマンドで実行出来ます。
fruitstrap -i <device_id> -b bundle.app
device_id は Organizer を使って、Device Identifier を調べます。bundle.app の部分は、インストールしたい .app を指定します。
生成された fruitstrap は適宜、~/local/bin に置くと良いと思います。
2013/07/16: 追記
mobiledevice
https://github.com/imkira/mobiledevice
このツールを教えてもらいました! これが使っている技術は、fruitstrap と一緒で、 Apple の private API を利用しています。 ただ、こちらの方が機能が多い・ASSERT がちゃんとあるので問題があった時に把握しやすいので、良いです。
備えている機能は以下です。
- デバイスの Identifier 取得
- .app の Bundle_id 取得
- アプリのインストール
- アプリのアンインストール
- インストールされているアプリ一覧
- TCP コネクションを張る
すべて実機で行えます。 大変良い!