在 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 的關係。
沒有留言:
張貼留言