在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 ...
随机推荐
- placeholder 解决UITextField中placeholder和text文本同时显示的问题
TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理 ...
- Objective-C之null NaN undefined
http://blog.csdn.net/siemenliu/article/details/6568306
- SQL数据库约束行为---防止数据乱填(即数据规范化)
防止乱填:一.Check约束.按照某种规则对数据进行检查.操作:在表的设计界面中,右击相应的列,选择“CHECK约束”在弹出的对话框中,设置约束的名称和表达式. 代码实现: create table ...
- C#中() =>是什么意思
如题C#中() =>是什么意思,比如 public ICommand AddCommand { get { if (this.addCommand == null) this.addComman ...
- c++ float 带 e 的指数
带e是指10的 e后面次方 #include <iostream> int main() { float f; f = 9.87654321f; std::cout << f ...
- head标签掉到body里的问题
HTML最开始的标签 <!DOCTYPE html>在其之前不能有任何的内容,否则head里的内容就会掉到body里,导致譬如网站的图标icon无法更新等的功能问题
- Django基础-过滤器
1.可以通过过滤器来修改变量的显示,过滤器的形式是:{{ variable | filter }},管道符号'|'代表使用过滤器 2.过滤器能够采用链式的方式使用,例如:{{ text | escap ...
- 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...
- git sshkeygen Fingerprint cannot be generated解决方法
ssh-keygen -t rsa -C "xxx@xxx.com" 生成后使用cat或者vim 查看该rsa,然后复制到github的ssh keys中: 提示: ...
- Installing Python 3.5.2 from source
Here are the procedures we are to follow, Download the source code of an official Python release. Co ...