http://phoneos.org/bbs/thread-40-1-1.html
尽管ubuntu上不需要安装驱动就可以识别设备,但还是有一些设备无法通过"adb devices"找到
这样的设备一般是定义了自己的vendor id,而这个id不在android默认的列表里面
连接设备之后通过 "lsusb"命令可以发现其实设备已经连接到电脑上
Bus 002 Device 003: ID 046d:c31d Logitech, Inc.
Bus 002 Device 002: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 04e8:685e Samsung Electronics Co., Ltd 我自己的三星手机
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
以三星手机为例
04e8就是vendor id 685e就是 product id
如果这个手机无法通过adb devices 找到,那么只需要在 "~/.android"目录下添加一个adb_usb.ini文件
里面写入0x04e8 就可以了
那么android默认识别的vendor id 都有哪些呢?
看下adb的代码就知道了
system/core/adb/usb_vendors.c
// Google's USB Vendor ID
#define VENDOR_ID_GOOGLE 0x18d1
// Intel's USB Vendor ID
#define VENDOR_ID_INTEL 0x8087
// HTC's USB Vendor ID
#define VENDOR_ID_HTC 0x0bb4
// Samsung's USB Vendor ID
#define VENDOR_ID_SAMSUNG 0x04e8
// Motorola's USB Vendor ID
#define VENDOR_ID_MOTOROLA 0x22b8
// LG's USB Vendor ID
#define VENDOR_ID_LGE 0x1004
// Huawei's USB Vendor ID
#define VENDOR_ID_HUAWEI 0x12D1
// Acer's USB Vendor ID
#define VENDOR_ID_ACER 0x0502
// Sony Ericsson's USB Vendor ID
#define VENDOR_ID_SONY_ERICSSON 0x0FCE
// Foxconn's USB Vendor ID
#define VENDOR_ID_FOXCONN 0x0489
// Dell's USB Vendor ID
#define VENDOR_ID_DELL 0x413c
// Nvidia's USB Vendor ID
#define VENDOR_ID_NVIDIA 0x0955
// Garmin-Asus's USB Vendor ID
#define VENDOR_ID_GARMIN_ASUS 0x091E
// Sharp's USB Vendor ID
#define VENDOR_ID_SHARP 0x04dd
// ZTE's USB Vendor ID
#define VENDOR_ID_ZTE 0x19D2
// Kyocera's USB Vendor ID
#define VENDOR_ID_KYOCERA 0x0482
// Pantech's USB Vendor ID
#define VENDOR_ID_PANTECH 0x10A9
// Qualcomm's USB Vendor ID
#define VENDOR_ID_QUALCOMM 0x05c6
// On-The-Go-Video's USB Vendor ID
#define VENDOR_ID_OTGV 0x2257
// NEC's USB Vendor ID
#define VENDOR_ID_NEC 0x0409
......
为了识别其他的设备,还定义了
#define ANDROID_PATH ".android"
#define ANDROID_ADB_INI "adb_usb.ini"
其中usb_vendors_init()函数在加载预设置的vendor id之后,还会通过get_adb_usb_ini函数来加载adb_usb.ini中的id