ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2010年12月17日 星期五

connect adb with android

用 android sdk 的 tools/android 安裝完 真正的 sdk 後。
在 android sdk 目錄會多一個 platform-tool 目錄。裡面就有 adb.

根據 google 的說法, adb 在 linux 不必 driver (用的好像是 mass storage driver)。
但是要手動增加一個 usb event rule : http://developer.android.com/guide/developing/device.html#setting-up 先接上 android 裝置,用 lsusb 看一下 pid。然後寫 (我用的是 10.10)
charles-chang@ubuntu:/etc/udev/rules.d$ cat 51-android.rules SUBSYSTEM=="usb", SYSFS{idVendor}="0bb4", MODE="0666"
接上去後,用 adb device 就會列出 id,然後用 adb shell 就可以連線。

發現這是權限的問題,adb 是使用 scsi,所以 android device 會形成 /dev/sd? 這可以用 dmesg 看出來是哪一個。
第一次使用 adb 時,會啟動一個 daemon,用 ps -aux 可以看到
adb fork-server server
這個 daemon 的 pid 就是你自己 (user)。這個 daemon 需要有對 /dev 下,android device read/write 的權限。
所以,整個作法就是:
插入 android device, dmesg 看一下是 哪一個 device (/dev/sd?),ls -l 看一下 device 的 group 是誰 (floppy),修改 /etc/group,把自己 (user) 加到 floppy group 中。
(重新 login ?)
重新啟動 adb fork-server server: 先 kill 再 invoke:
adb kill-server adb devices
OK
不必加 rules.d

會特別看這篇是因為,我不寫 51-android.rules時,adb device, shell都會 report "permission denied",
即使用 sudo run 也一樣。

* 奇怪的是....Nelson Auron 也都是用 Linux,但是他門就沒有出現這個問題。
而且一但 rules 寫好,成功開啟adb 一次後,刪掉 rules 差拔裝置也OK.\

linux 跟 windows 的 adb push 有一點不一樣。
linux 的 adb push 會保留 file attribute (rwx), windows 不會。
--- 其實這是因為 windows 沒有 rws attribute 的關係。

沒有留言:

標籤

網誌存檔