ubuntuからandroidプログラムの実機での実行

タイトルのことを実行しようとしてハマったので解決法のメモ.

環境はubuntu11.04とgalaxy s2

javaeclipseandroid sdkは入っていて,
エミュレータでの実行は成功した後の話.
ついでに,adbへのパスも通ってる.
android側では"提供元不明のアプリ"と"USBデバッグ"にチェックをつけている状態.


何も設定せずにusbでandroidをつなぎ,adb devicesを実行すると以下のようになる.

# adb devices
?????????? no permission

udev rulesの設定が必要らしい.


まずは,lsusbでidVendorを確認.

# lusb
Bus 001 Device 011: ID 04e8:685e Samsung Electronics Co., Ltd

これでvendor idが04e8だと分かる(685eはproduct id,たぶん)


udev rulseを設定.idVendorのところにはさっき調べたvendor idを入れる

sudo echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666"' /etc/udev/rules.d/51-android.rules
sudo chmod a+rx /etc/udev/rules.d/51-android.rules


これでもまだno permissionで,調べたところadb serverをsuper userで実行すればよいとのこと

adb kill-server
sudo adb start-server


あとは,androidをつなぎなおせば認識をしてくれた.

adb devices
List of devices attached
############### device

(###############には実際は数字が入ってます)


eclipseからrun as 1. android applicationを選べばちゃんと実行できた.