今天把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程序出现设备没有访问权限的更多相关文章

  1. mac 下真机调试 android 手机

    第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Spreadtru ...

  2. 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 ...

  3. 【ionic】Mac IOS下真机调试

    模拟调试不能保证真机一定没问题,所以真机调试是非常必要的一步 IOS设备 启用设备调试 在IOS设备中(Iphone,Ipad)中开始web检测器 设备->safari->高级->w ...

  4. iPhone 真机调试应用程序

    原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1)       真机调试应用程序, ...

  5. 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退

    使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退.   解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...

  6. xcode7.1.1不能真机调试ios9.2系统设备的解决方法

    转载自:http://www.cocoachina.com/bbs/read.php?tid-331335.html 前些天手机升级到iOS9.2版本号  xcode7.1还能真机測试. 昨晚更新xc ...

  7. eclipse下使用Genymotion调试Android程序出现的问题

    一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...

  8. 移动设备真机调试本地程序的Node.js【无需连wifi】

     前提: 在某些场景下,我们需要调试我们的Node.js,这很简单,很多编辑器都集成了debug模式,但是某些场景下,我们想在移动设备上运行,在本地debug,这也行,只需要链接在同一个内网,通过ip ...

  9. 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 ...

随机推荐

  1. ocruntime

    原作: http://www.jianshu.com/p/25a319aee33d 三种方法的选择 Runtime提供三种方式来将原来的方法实现代替掉,那该怎样选择它们呢? Method Resolu ...

  2. UESTC 1256 昊昊爱运动 Map

    昊昊爱运动 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 昊昊喜欢运动 他N天 ...

  3. 循环,range,continue 和 break

    1.for循环 用户按照顺序循环可迭代对象中的内容, PS:break.continue li = [11,22,33,44] for item in li:     print item 2.enu ...

  4. ruby学习总结05

    1.数值类(Numeric) 有理数:Rational(分子,分母) 复数:Complex(实数,虚数) 随机数:Rnadom   rand()  返回比1小的浮点数,rand(种子数)  返回0到该 ...

  5. 中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。

    package a; public interface CentralPartyCommittee { void partyLeader(); } package a; public abstract ...

  6. CodeForces 483C Diverse Permutation

    Diverse Permutation Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  7. [HDOJ5934]Bomb(强连通分量,缩点)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5934 题意:有n个炸弹,爆炸范围和点燃花费给你,如果一个爆炸那么它爆炸范围内的炸弹也会爆炸.问让所有炸 ...

  8. [poj3349]Snowflake Snow Snowflakes(hash)

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 37615 Accepted: ...

  9. eclipse 安装git

    1.安装Git 首先安装Git.这里只讲Windows环境下安装Git方法. 从Git下载git的Windows安装文件,一路Next到选择安装组件这一步: 选上Git Bash Here这一项,这样 ...

  10. [转载] 如何使用Lex/YACC

    原文: http://segmentfault.com/a/1190000000396608?hmsr=toutiao.io&utm_medium=toutiao.io&utm_sou ...