Xperiaで実機テスト with Mac and Ubuntu

Android開発はシミュレータより実機でやるのが断然いいよ!と日本アンドロイドの会横浜支部の集まりにで行ったときに聞いたのでもっぱら実機上で開発中。
なんでも動作が速くていいそうだ。(その恩恵が分かるほどのものをまだ作ってない)

ちなみにiOS開発では開発中アプリを実機へインストールする際にちょっと時間がかかるのでシミュレータを主に使って実機検証は開発終盤のみになるかんじだが、Android開発ではそんなことはなくてさくっと実機にアプリが入る。

実機の準備

Xperia実機でUSBデバッグを有効にする。
「設定」→「アプリケーション」→「開発」と移動して「USBデバッグ」にチェックを付ければオッケー。

Mac(Snow Leopard)での実機接続

XperiaをUSBでつなぐだけ。
後はプロジェクトのディレクトリでant installすれば実機にアプリがインストールされる。

あっさりすぎて拍子抜け。

Ubuntuでの実機接続

Ubuntuのバージョンは9.10。
Xperiaをデバイスとして認識させるためにudevルールファイルを作成する必要がある。

/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", SYSFS(idVendor)=="0fce",MODE="0666"

これで以下のコマンドを実行。

$ sudo /etc/init.d/udev restart
$ adb devices 

adb devicesの出力に接続したデバイスがリストに表示されていればよし。
デバイスとして認識されればMacの時と同じようにant installで実機テストができる。

no permissionsなどと表示される場合はルールファイルの記述ミスとかファイル名が間違っているとかの理由が考えられるので内容を見直すこと。(ファイル名を間違えてちょっとだけハマった)

うまくいかない場合はXperiaのUSBをいったん抜き差ししたり、

$ adb kill-server

してみたりすると何とかなるかもしれない。

参考

追記 Failure [INSTALL_FAILED_ALREADY_EXISTS] への対処

ant installした時に上記エラーメッセージが出て実機へのインストールが失敗することがある。
原因は以下の二つが考えられる。

* パッケージ名が他の既存のアプリと衝突している
* 開発中のアプリを以前ant installした後削除してない

一番目のケースはパッケージ名を変えればよいが(というか変えるべき)、二番目のケースはいちいち削除するのがめんどくさい。
こいつは困ったなあ、と思っていたらadbのヘルプとandroid_rules.xmlを読んで解決。

ant installのかわりにant reinstallを実行すればよかった。

なんかぐーぐる先生に聞いても出てこなかったのでメモっておく。

2010/09/10追記

andorid_rules.xmlはScalaのために落としたものなので普通は存在しないってことを忘れてた。
なのでbuild.xmlが通常のままだとant reinstallは使えない。

ant uninstallは通常のままでも存在するのでant uninstallした後でant installすればant reinstallの代わりになる。
とはいえ毎回ふたつコマンドを実行するのもめんどくさいのでant reinstallを定義してしまった方がいい。

前の記事

RubyKaigi2010の感想