Ubuntu 下使用 ADB 调试 Android 应用时的设备识别问题
来源:互联网 发布:淘宝手机详情页模板 编辑:程序博客网 时间:2024/05/16 01:02
在 Ubuntu 下使用 Android ADB 调试时如果出现错误提示: insufficient permissions for device: verify udev rules
等等… 以及各种各样的奇怪问题, 总之就是不能用或不好用.
这都可能是 udev rules 问题. 可以优先尝试如下解决方案:
udev rules
这是谷歌官方给出的 Ubuntu 下使用 ADB 调试的配置方法, 链接在此 (需翻墙) .
只说说其具体操作步骤:
首先, 以 root 权限创建文件
/etc/udev/rules.d/51-android.rules
.$ sudo touch /etc/udev/rules.d/51-android.rules
然后, 为每个制造商创建一条规则.
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
上面这条规则中的 vendor ID 是 HTC 的.MODE
参数指定了读写权限;GROUP
属性指定设备节点的拥有组.
编辑/etc/udev/rules.d/51-android.rules
文件. 如果这个文件是空的, 就加入这条规则. 如果有内容, 就把这行追加到文件最后.最后, 为该文件增加读权限:
$ chmod a+r /etc/udev/rules.d/51-android.rules
最最后, 重新插拔手机, 就可以愉快的调试了.
并非所有的手机都需要走上面这一套才可以调试. 具体啥样的手机需要这样做, 我就不知道了…
总之 Ubuntu 下遇到 ADB 有问题时, 可以优先尝试以上解决办法.
设备制造商 Vendor ID
这张表是谷歌官方给出的, 里面的数据就是填写在 ATTR{idVendor}
属性中各个制造商的 idVendor 的值.
并非所有(国内)常见制造商都在官方表中被列出. 自己收集了其他常见的 vendor id (持续增加, 欢迎补充):
lsusb
这个 idVendor 的值也可以通过 lsusb 命令查看到.
博主自用的电脑上, 没插任何 USB 设备时, 这个命令输出如下:
$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 004: ID 5986:0708 Acer, Inc Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bus 001 Device 002: ID 138a:0090 Validity Sensors, Inc. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
以第一条输出为例进行说明:
Bus 002 : 指明设备连接到哪 (哪条总线)Device 001 : 表明这是连接到总线上的第一台设备ID 1d6b:0003 : 设备的ID. 1d6b 是生产商ID (我们就是要这个), 0003 是产品IDLinux Foundation 3.0 : 生产商root hub : 设备名
博主手头有一部古老的酷派手机, 直接链接 Android Studio 总是无法调试. 而谷歌大大的表里又没有酷派的 Vendor ID, 只能自己找.
插上酷派手机后再执行 lsusb, 输出如下:
$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 004: ID 5986:0708 Acer, Inc Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bus 001 Device 002: ID 138a:0090 Validity Sensors, Inc. Bus 001 Device 012: ID 1ebf:7027 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
很明显, 多出来的那条, 就是没写生产商名字和设备名字的那条, 就是酷派手机的信息. (怪不得谷大表里不写, 自己都不上心给自己起个名字)
Bus 001 Device 012: ID 1ebf:7027
其中的 1ebf 就是我们要找的 Vendor ID.
根据这个 Vendor ID 在 /etc/udev/rules.d/51-android.rules
加入一条规则:
SUBSYSTEM=="usb", ATTR{idVendor}=="1ebf", MODE="0666", GROUP="plugdev"
然后重新插拔手机, 再次使用 Android Studio 调试, 就可以正常使用了.
我的 udev rule 文件
自己挑了几个常见的设备商, 都写进 rule list 里了, 免得以后再加麻烦.
我的 chmod a+r /etc/udev/rules.d/51-android.rules
文件长这样 (都是为调试 Android 而加入的):
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="201E", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="8087", MODE="0666", GROUP="plugdev"SUBSYSTEM=="usb", ATTR{idVendor}=="8087", MODE="0666", GROUP="plugdev"
注意: Android 4.2.2 及以上的设备, 连接 ADB 调试时手机端会有一个授权对话框. 没有在手机端点击确认的话, 也是无法进行调试的. 本文可不是在教大家绕过这个东西.
这段说明可能略废话, 但为了不至引起误解, 想象还是加上吧.
参考:
Run Apps on a Hardware Device
writing udev rules
- Ubuntu 下使用 ADB 调试 Android 应用时的设备识别问题
- Ubuntu Android adb调试无法识别设备
- Ubuntu下adb无法识别android设备的解决方法
- Ubuntu下ADB调试Android找不到设备
- ubuntu下adb调试android找不到设备的解决方法
- ubuntu下adb调试android找不到设备的解决方法
- Ubuntu下ADB调试Android找不到设备的解决方法
- Ubuntu下Adb调试Android找不到设备的解决方法
- Ubuntu下ADB调试Android找不到设备的解决方法
- Ubuntu下Adb调试Android找不到设备的解决方法
- Ubuntu下ADB调试Android找不到设备的解决方法
- Ubuntu下使用adb和USB连接的方式进行android设备调试
- Ubuntu下使用adb和USB连接的方式进行android设备调试
- ubuntu 64 adb 识别android设备
- 关于Mac系统下某些Android设备无法被adb识别问题的解决方法
- 使用adb调试Android设备
- Ubuntu下ADB调试Android
- Linux下adb不能识别Android设备
- openfire集群配置
- HashMap 哈希算法
- 关于换工作后的心得
- 【工作笔记】ElasticSearch从零开始学(三)—— 入门(聚合)
- 大陆身份证号码格式校验代码
- Ubuntu 下使用 ADB 调试 Android 应用时的设备识别问题
- 大理石在哪儿 where is the Marble? lower_bound()
- 单线程实现定时执行任务功能
- battery-historian工具环境部署及使用
- 数组赋值和传递(从网上看到的几种情况)
- 表单中的单选框、多选框中的name属性用途
- CAP理论以及hadoop组件
- C++运算符重载
- 如何改变eclipse中的字体大小