作为一名Android开发人员,经常需要将手机连接到PC,以便调试程序。

      但是,有些手机不容易连接上。导致这一问题有多方面的原因:

      1.手机内部状态出了问题。一般来说,重新打开“USB调试”就可以解决这个问题,但是有时需要重启手机或PC才行。

      2.USB供电不足。如果是这个原因,那么就需要更换USB连接线或者USB插口。

      3.没有安装相应的驱动。这个问题一般只针对Windows用户才存在,安装驱动就可以解决问题。如果是Linux或Mac OS X用户,则无需安装驱动。

      4.其它程序干扰。就我个人情况而言,经常就是由于“豌豆夹”的运行,导致Eclipse无法识别到手机。杀掉它。

      5.adb等的版本过低。升级Android的一系列开发工具和SDK,就可以解决问题。

      如果是在Linux下面工作,情况可能比较复杂,下面主要来说明一下这种情况。

      在Linux下面,你不需要安装驱动,按理说,连接一个手机不应该出问题;但是,Linux下面的权限管理比较严格,不是任何人都可以操作USB设备的。

      关于这一点,可以做如下验证:

      1.找一台不能被识别的手机,连接上PC,运行lsusb,你会发现,它出现在结果列表中,这说明Linux是识别该手机的。

      2.以root身份重新运行adb,你会发现,手机现在可以被识别了。

      3.以普通身份重新运行adb,执行adb devices,你会发现,该手机被标识为“????????????      no permissions”。

      总结,手机之所以不能被识别,是由于当前Linux用户不具备足够的权限。

      解决方法:

      1.如果没有的话,在Linux上创建/etc/udev/rules.d/51-android.rules文件(以root身份)。

      2.加入类似形式的行(每个设备一行):SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"。

         其中,ATTR{idVendor}=="0bb4"中的数字应该替换成对应手机的id,该id可以通过lsusb查询。

         这行代码中,关键的部分是MODE="0666",它向所有人开放了该设备的读写权限。

      3.重启udev。在我的Ubunut 12.10之下,发现无需做这一步,正好我也不理解udev。

      另外,还有一些比较特别的情况,请参考我写的另外两篇文章:

      解决"设备升级至Android 4.2.2之后,可以连接但无法调试"的问题

      Ubuntu 12.04无法识别华为U8500

      安装驱动:

      http://developer.android.com/tools/extras/oem-usb.html(针对一般手机)

      http://developer.android.com/sdk/win-usb.html(针对Google手机)

      官方说明:

      http://developer.android.com/tools/device.html

      书写udev rules:

      http://www.reactivated.net/writing_udev_rules.html