今天把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. Java动态代理 cglib

    代理模式:为某些对象提供代理以实现对这个对象的访问. 对一个对象进行访问控制的原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化. 一般包括以下组件: 被代理者接口:提供被代理者的访问途径. ...

  2. SqlSever基础 dateadd year,增加五年

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  3. hdu4992 Primitive Roots(所有原根)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4992 题意:给出n,输出n的所有原根. 思路:求出n的一个原根x,那么对于所以的i,i<phi( ...

  4. UPC 2170 D Equal Is Not Really Equal (欧拉路径)

    题目链接:http://acm.upc.edu.cn/problem.php?id=2170 题意:给出一个字符串,比如ABACA,在这个串里,AB.BA.AC.CA各出现一次.若存在另外一个串,里面 ...

  5. CodeForces 42A Guilty — to the kitchen!

     Guilty — to the kitchen! Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  6. ubuntu Linux 测试PHP却提示下载文件的解决办法

    ubuntu Linux 测试PHP却提示下载文件的解决办法   一般这种情况都是在刚刚开始配置环境时出现的, 输入 sudo a2enmod php5  看提示如果出现“$ This module ...

  7. How do I reset Windows Update components?

    https://support.microsoft.com/en-us/kb/971058 Download and run the Windows Update Troubleshooter for ...

  8. 梯度下降法VS随机梯度下降法 (Python的实现)

    # -*- coding: cp936 -*- import numpy as np from scipy import stats import matplotlib.pyplot as plt # ...

  9. How To Use RUN_PRODUCT In Oracle Forms

    Run_Product is used to run Oracle Reports (RDF/REP files) in Oracle Forms. It invokes one of the sup ...

  10. Word和Windows有严重的bug这样下去微软堪忧

    Word和Windows对微软的重要性就像C语言的指针. Windows中特别常用的搜索功能有严重的bug,常常搜不到Excel文件. Word中的排版功能有严重的bug,有图超过几十页就无法排版了, ...