android adb devices 找不到设备时的解决方法

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

你可能感兴趣的:(android)