在ubuntu下真机调试android程序出现设备没有访问权限
今天把android的开发环境从windows平台切换到了ubuntu上。
java jdk android-adt android-ndk都下好,环境变量都配好之后,
在调试程序的时候,出现设备没有权限访问,在shell中输入adb devices
出现 ????? no permittion
一看这个,就蒙了。在网上谷歌百度了半天,
出现的答案,感觉大家都是copy过来的,不了解如何真正的去解决这个
问题,也许这些解决方法在某些情况下,有效,而我拿过来,在我这里
完全没有用。
没办法了,还是自己边查资料,边研究,到底怎么回事。
后来知道,这个是设备访问权限的问题。
知道了3种解决方法:
第一种:通过udev的rules文件来改变设备访问权限
在linux下,设备是以文件的形式出现的,对设备的访问,也就是对文件的访问。
linux内核加载的设备,会把设备的信息,放到用户空间sysfs。也就是在/sys中。
以供用户查询设备的信息。假如用户需要修改设备的一些属性,或者在系统加载
和移除设备的时候进行一下操作以及其他一些需求时,应该怎么办呢??
在linux内核版本2.6以后,使用udev来进行设备管理,之前是使用devfs。
udev提供了配置文件/etc/udev/udev.conf和规则文件在/etc/udev/rules.d下面的.rules文件
系统默认的一些规则文件在/lib/udev/rules.d下面。
我们可以通过编写规则文件来改变系统创建设备文件的规则
这里我们需要改变创建设备文件的访问权限。
.rules中的每一行都是一条规则
一条规则有key-values对构成。
键值对又分为匹配键值对和赋值键值对
一条规则至少包含一个匹配键值对和一个赋值键值对
通过匹配键值对去匹配设备,然后在对这个设备执行赋值键值对。
我的规则如下:
SUBSYSTEM=="usb",ATTR{devpath}=="1.1.1",ATTR{idVendor}=="0bb4",ATTR{idProduct}=="0cf0",MODE="0777",SYMLINK+="LZL_HTC"
SUBSYSTEM=="usb",ATTR{devpath}=="1.1.1",ATTR{idVendor}=="0bb4",ATTR{idProduct}=="0cf0"这一部分属于匹配键值对
MODE="0777"这里是赋值键值对,在修改设备的访问权限
在写匹配键值对的时候
可以通过udevadm info -a -n /dev/设备文件名
来查讯设备的信息。
如下所示:
KERNEL=="2-1.1.1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{devpath}=="1.1.1"
ATTR{idVendor}=="0bb4"
ATTR{speed}=="480"
ATTR{bNumInterfaces}==" 2"
ATTR{bConfigurationValue}=="1"
ATTR{bMaxPacketSize0}=="64"
ATTR{busnum}=="2"
ATTR{devnum}=="10"
规则文件的命名要注意了
udev会通过文件名的assii码的升序来遍历规则文件
然后匹配上的规则文件都会生效。
所以会发生覆盖的现象。
所以假如要自己的规则生效一定要在后面执行规则。
添加了规则文件后,可以通过sudo udevadm trigger
人工触发udev,使规则文件生效。
udev 的知识可以参考:https://wiki.archlinux.org/index.php/Udev#Installation
第二种:用root用户去调试android程序或者用root用户去启动adb服务。
如:
sudo ./adb kill-server
sudo ./adb devices
第三种:手动修改设备文件的访问权限
我们知道linux会在/dev下面产生相应设备的设备文件
在这里找到相应的设备文件,通过chmod来修改访问权限就好了。
在ubuntu下真机调试android程序出现设备没有访问权限的更多相关文章
- mac 下真机调试 android 手机
第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType 可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Spreadtru ...
- ionic真机调试Android报错 - could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon
在使用真机调试Android程序时,报错如下: could not read ok from ADB Server * failed to start daemon error: cannot con ...
- 【ionic】Mac IOS下真机调试
模拟调试不能保证真机一定没问题,所以真机调试是非常必要的一步 IOS设备 启用设备调试 在IOS设备中(Iphone,Ipad)中开始web检测器 设备->safari->高级->w ...
- iPhone 真机调试应用程序
原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1) 真机调试应用程序, ...
- 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退
使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退. 解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...
- xcode7.1.1不能真机调试ios9.2系统设备的解决方法
转载自:http://www.cocoachina.com/bbs/read.php?tid-331335.html 前些天手机升级到iOS9.2版本号 xcode7.1还能真机測试. 昨晚更新xc ...
- eclipse下使用Genymotion调试Android程序出现的问题
一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...
- 移动设备真机调试本地程序的Node.js【无需连wifi】
前提: 在某些场景下,我们需要调试我们的Node.js,这很简单,很多编辑器都集成了debug模式,但是某些场景下,我们想在移动设备上运行,在本地debug,这也行,只需要链接在同一个内网,通过ip ...
- Android真机调试 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features
参考连接:http://blog.csdn.net/scyatcs/article/details/9003285 Android.Util.AndroidRuntimeException: You ...
随机推荐
- IDEA -14 注册码生成工具
import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.zip.CR ...
- hdu敌兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- Android Handler Message总结
http://blog.csdn.net/caesardadi/article/details/8473777 当应用程序启动时,会开启一个主线程(也就是UI线程),由她来管理UI,监听用户点击,来响 ...
- placeholder 解决UITextField中placeholder和text文本同时显示的问题
TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理 ...
- asp.net MVC webservice 报次错解决方法
asp.net MVC webservice 报次错解决方法: 解决方法: 在 RouteConfig.cs public static void RegisterRoutes(RouteCol ...
- 【Thread】多线程的异常处理?
线程中处理异常是个头疼的问题,在异步的代码中,如何将异常捕获. 捕获异常后,将异常反馈给开发者,或用户.一般来说,反馈给开发者,多数方式在是日志中打印异常日志:而反馈给用户,多数是在界面上友好提示(比 ...
- Python3基础 使用技巧:把代码的字体变大
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- SqlSever基础 union 联合查询,厉害的并集 重复项只显示一个 两个查询结果并在一起后排序
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)
GameObjectFindTransformFind查找游戏对象 前置条件 相关API 1 GameObjectFind 2 TransformFind 3 其他查找 实际测试 即使隐藏root节点 ...
- Beaglebone Black–GPIO 开关 LED(三极管与继电器实验)
上一篇,用 GPIO 直接供电给 LED,用高低电平作开关,不靠谱.GPIO 是信号用的,不是当电源用的.而且,一个 GPIO 只能给可怜的 5mA 左右,取多了会烧(我没烧过不知道是不是真的会烧,但 ...