今天把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. mysql获取当前时间,及其相关操作

    获取UNIX时间戳 : UNIX_TIMESTAMP(NOW()) 1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还 ...

  2. 网页3D效果库Three.js初窥

    网页3D效果库Three.js初窥 背景 一直想研究下web页面的3D效果,最后选择了一个比较的成熟的框架Three.js下手 ThreeJs官网 ThreeJs-github; 接下来我会陆续翻译 ...

  3. 解决Duilib创建的win32窗口拖到屏幕上边缘自动最大化

    转载:http://bbs.csdn.net/topics/390842294 使用Duilib创建窗口的时候,假如有这样一个需求: 1.窗口大小规定 2.不可拖拽改变窗口大小 3.双击标题栏禁止最大 ...

  4. HDU2112 HDU Today 最短路+字符串哈希

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. .Net文件上传--小数据--un

    文件上传控件:FileUpload - 控件,界面+方法+属性Button/LinkButton/ImageButton FileUpload控件:1.SaveAs("要上传到服务器的绝对路 ...

  6. BZOJ 3589 动态树(子树操作,链查询)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3589 题意:给出一棵有根树,两种操作:(1)以u为根的子树所有节点权值加上一个数字 ...

  7. 【Unity3D游戏开发】性能优化之spine提高80~90%的效率 (三一)

    Spine效率低 Unity项目加载spine动画,经常会出现卡顿的情况,如游戏中瞬间播放一个动画,打开一个带spine动画的界面.尤其是SkeletonRenderer.Awake时,会瞬间出现大量 ...

  8. DrawIndexedPrimitive参数详解

    HRESULT DrawIndexedPrimitive( [in]  D3DPRIMITIVETYPE Type, [in]  INT BaseVertexIndex, [in]  UINT Min ...

  9. DirectX 3d 取景变换

    在世界坐标系中,几何体和摄像机都是相对于世界坐标系定义的.但是当摄像机的位置和朝向任意时,投影变换及其它类型的变的就略显困难或效率不高.为了简化运算,我们将摄像机变的至世界坐标系原点,并将其旋转,使摄 ...

  10. mysql for windows之my.ini优化

    修改配置文件 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini  并重新启动. 1, 查看MySQL服务器配置信息 mysql> show variabl ...